SYSTEM={
	---Pauses execution of the current script, please note this behavior is only seen when called from one of the game script files(ysc). In order to wait an asi script use "static void WAIT(DWORD time);" found in main.h  
	WAIT = function(ms) invoker.call(0x4EDE34FBADD967A6, ms) end,
	---Examples:  
	--- g_384A = SYSTEM::START_NEW_SCRIPT("cellphone_flashhand", 1424);  
	--- l_10D = SYSTEM::START_NEW_SCRIPT("taxiService", 1828);  
	--- SYSTEM::START_NEW_SCRIPT("AM_MP_YACHT", 5000);  
	--- SYSTEM::START_NEW_SCRIPT("emergencycall", 512);  
	--- SYSTEM::START_NEW_SCRIPT("emergencycall", 512);   
	--- SYSTEM::START_NEW_SCRIPT("FM_maintain_cloud_header_data", 1424);  
	--- SYSTEM::START_NEW_SCRIPT("FM_Mission_Controller", 31000);  
	--- SYSTEM::START_NEW_SCRIPT("tennis_family", 3650);  
	--- SYSTEM::START_NEW_SCRIPT("Celebrations", 3650);  
	---  
	---Decompiled examples of usage when starting a script:  
	---   
	---    SCRIPT::REQUEST_SCRIPT(a_0);  
	---    if (SCRIPT::HAS_SCRIPT_LOADED(a_0)) {  
	---        SYSTEM::START_NEW_SCRIPT(a_0, v_3);  
	---        SCRIPT::SET_SCRIPT_AS_NO_LONGER_NEEDED(a_0);  
	---        return 1;  
	---    }  
	---   
	---or:  
	---  
	---    v_2 = "MrsPhilips2";  
	---    SCRIPT::REQUEST_SCRIPT(v_2);  
	---    while (!SCRIPT::HAS_SCRIPT_LOADED(v_2)) {  
	---    SCRIPT::REQUEST_SCRIPT(v_2);  
	---    SYSTEM::WAIT(0);  
	---    }  
	---    sub_8792(36);  
	---    SYSTEM::START_NEW_SCRIPT(v_2, 17000);  
	---    SCRIPT::SET_SCRIPT_AS_NO_LONGER_NEEDED(v_2);  
	START_NEW_SCRIPT = function(scriptName, stackSize) return invoker.call(0xE81651AD79516E48, scriptName, stackSize).int end,
	---return : script thread id, 0 if failed  
	---Pass pointer to struct of args in p1, size of struct goes into p2  
	START_NEW_SCRIPT_WITH_ARGS = function(scriptName, args, argCount, stackSize) return invoker.call(0xB8BA7F44DF1575E1, scriptName, args, argCount, stackSize).int end,
	---  
	START_NEW_SCRIPT_WITH_NAME_HASH = function(scriptHash, stackSize) return invoker.call(0xEB1C67C3A5333A92, scriptHash, stackSize).int end,
	---  
	START_NEW_SCRIPT_WITH_NAME_HASH_AND_ARGS = function(scriptHash, args, argCount, stackSize) return invoker.call(0xC4BB298BD441BE78, scriptHash, args, argCount, stackSize).int end,
	---Counts up. Every 1000 is 1 real-time second. Use SETTIMERA(int value) to set the timer (e.g.: SETTIMERA(0)).  
	TIMERA = function() return invoker.call(0x83666F9FB8FEBD4B).int end,
	---  
	TIMERB = function() return invoker.call(0xC9D9444186B5A374).int end,
	---  
	SETTIMERA = function(value) invoker.call(0xC1B1E9A034A63A62, value) end,
	---  
	SETTIMERB = function(value) invoker.call(0x5AE11BC36633DE4E, value) end,
	---Gets the current frame time.  
	TIMESTEP = function() return invoker.call(0x0000000050597EE2).float end,
	---  
	SIN = function(value) return invoker.call(0x0BADBFA3B172435F, value).float end,
	---  
	COS = function(value) return invoker.call(0xD0FFB162F40A139C, value).float end,
	---  
	SQRT = function(value) return invoker.call(0x71D93B57D07F9804, value).float end,
	---  
	POW = function(base, exponent) return invoker.call(0xE3621CC40F31FE2E, base, exponent).float end,
	---  
	LOG10 = function(value) return invoker.call(0xE816E655DE37FE20, value).float end,
	---Calculates the magnitude of a vector.  
	VMAG = function(x, y, z) return invoker.call(0x652D2EEEF1D3E62C, x, y, z).float end,
	---Calculates the magnitude of a vector but does not perform Sqrt operations. (Its way faster)  
	VMAG2 = function(x, y, z) return invoker.call(0xA8CEACB4F35AE058, x, y, z).float end,
	---Calculates distance between vectors.  
	VDIST = function(x1, y1, z1, x2, y2, z2) return invoker.call(0x2A488C176D52CCA5, x1, y1, z1, x2, y2, z2).float end,
	---Calculates distance between vectors but does not perform Sqrt operations. (Its way faster)  
	VDIST2 = function(x1, y1, z1, x2, y2, z2) return invoker.call(0xB7A628320EFF8E47, x1, y1, z1, x2, y2, z2).float end,
	---  
	SHIFT_LEFT = function(value, bitShift) return invoker.call(0xEDD95A39E5544DE8, value, bitShift).int end,
	---  
	SHIFT_RIGHT = function(value, bitShift) return invoker.call(0x97EF1E5BCE9DC075, value, bitShift).int end,
	---  
	FLOOR = function(value) return invoker.call(0xF34EE736CF047844, value).int end,
	---I'm guessing this rounds a float value up to the next whole number, and FLOOR rounds it down  
	CEIL = function(value) return invoker.call(0x11E019C8F43ACC8A, value).int end,
	---  
	ROUND = function(value) return invoker.call(0xF2DB717A73826179, value).int end,
	---  
	TO_FLOAT = function(value) return invoker.call(0xBBDA792448DB5A89, value).float end,
	---THREAD_PRIO_HIGHEST = 0  
	---THREAD_PRIO_NORMAL = 1  
	---THREAD_PRIO_LOWEST = 2  
	---THREAD_PRIO_MANUAL_UPDATE = 100  
	SET_THIS_THREAD_PRIORITY = function(priority) invoker.call(0x42B65DEEF2EDF2A1, priority) end,
}
APP={
	APP_DATA_VALID = function() return invoker.call(0x846AA8E7D55EE5B6).bool end,
	---  
	APP_GET_INT = function(property) return invoker.call(0xD3A58A12C77D9D4B, property).int end,
	---  
	APP_GET_FLOAT = function(property) return invoker.call(0x1514FB24C02C2322, property).float end,
	---  
	APP_GET_STRING = function(property) return invoker.call(0x749B023950D2311C, property).str end,
	---  
	APP_SET_INT = function(property, value) invoker.call(0x607E8E3D3E4F9611, property, value) end,
	---  
	APP_SET_FLOAT = function(property, value) invoker.call(0x25D7687C68E0DAA4, property, value) end,
	---  
	APP_SET_STRING = function(property, value) invoker.call(0x3FF2FCEC4B7721B4, property, value) end,
	---Called in the gamescripts like:  
	---APP::APP_SET_APP("car");  
	---APP::APP_SET_APP("dog");  
	APP_SET_APP = function(appName) invoker.call(0xCFD0406ADAF90D2B, appName) end,
	---  
	APP_SET_BLOCK = function(blockName) invoker.call(0x262AB456A3D21F93, blockName) end,
	---  
	APP_CLEAR_BLOCK = function() invoker.call(0x5FE1DF3342DB7DBA) end,
	---  
	APP_CLOSE_APP = function() invoker.call(0xE41C65E07A5F05FC) end,
	---  
	APP_CLOSE_BLOCK = function() invoker.call(0xE8E3FCF72EAC0EF8) end,
	---  
	APP_HAS_LINKED_SOCIAL_CLUB_ACCOUNT = function() return invoker.call(0x71EEE69745088DA0).bool end,
	---  
	APP_HAS_SYNCED_DATA = function(appName) return invoker.call(0xCA52279A7271517F, appName).bool end,
	---  
	APP_SAVE_DATA = function() invoker.call(0x95C5D356CDA6E85F) end,
	---  
	APP_GET_DELETED_FILE_STATUS = function() return invoker.call(0xC9853A2BE3DED1A6).int end,
	---  
	APP_DELETE_APP_DATA = function(appName) return invoker.call(0x44151AEA95C8A003, appName).bool end,
}
AUDIO={
	---All found occurrences in b617d, sorted alphabetically and identical lines removed: https://pastebin.com/RFb4GTny  
	---  
	---AUDIO::PLAY_PED_RINGTONE("Remote_Ring", PLAYER::PLAYER_PED_ID(), 1);  
	---AUDIO::PLAY_PED_RINGTONE("Dial_and_Remote_Ring", PLAYER::PLAYER_PED_ID(), 1);  
	---  
	PLAY_PED_RINGTONE = function(ringtoneName, ped, p2) invoker.call(0xF9E56683CA8E11A5, ringtoneName, ped, p2) end,
	---  
	IS_PED_RINGTONE_PLAYING = function(ped) return invoker.call(0x1E8E5E20937E3137, ped).bool end,
	---  
	STOP_PED_RINGTONE = function(ped) invoker.call(0x6C5AE23EFA885092, ped) end,
	---  
	IS_MOBILE_PHONE_CALL_ONGOING = function() return invoker.call(0x7497D2CE2C30D24C).bool end,
	---  
	IS_MOBILE_INTERFERENCE_ACTIVE = function() return invoker.call(0xC8B1B2425604CDD0).bool end,
	---  
	GET_CURRENT_TV_SHOW_PLAY_TIME = function() return invoker.call(0xDD3AA743AB7D4D75).int end,
	---  
	CREATE_NEW_SCRIPTED_CONVERSATION = function() invoker.call(0xD2C91A0B572AAE56) end,
	---NOTE: ones that are -1, 0 - 35 are determined by a function where it gets a TextLabel from a global then runs,  
	---GET_CHARACTER_FROM_AUDIO_CONVERSATION_FILENAME and depending on what the result is it goes in check order of 0 - 9 then A - Z then z (lowercase). So it will then return 0 - 35 or -1 if it's 'z'. The func to handle that ^^ is func_67 in dialog_handler.c atleast in TU27 Xbox360 scripts.  
	---  
	---p0 is -1, 0 - 35  
	---p1 is a char or string (whatever you wanna call it)  
	---p2 is Global 10597 + i * 6. 'i' is a while(i < 70) loop  
	---p3 is again -1, 0 - 35   
	---p4 is again -1, 0 - 35   
	---p5 is either 0 or 1 (bool ?)  
	---p6 is either 0 or 1 (The func to determine this is bool)  
	---p7 is either 0 or 1 (The func to determine this is bool)  
	---p8 is either 0 or 1 (The func to determine this is bool)  
	---p9 is 0 - 3 (Determined by func_60 in dialogue_handler.c)  
	---p10 is either 0 or 1 (The func to determine this is bool)  
	---p11 is either 0 or 1 (The func to determine this is bool)  
	---p12 is unknown as in TU27 X360 scripts it only goes to p11.  
	ADD_LINE_TO_CONVERSATION = function(index, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12) invoker.call(0xC5EF963405593646, index, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12) end,
	---4 calls in the b617d scripts. The only one with p0 and p2 in clear text:  
	---  
	---AUDIO::ADD_PED_TO_CONVERSATION(5, l_AF, "DINAPOLI");  
	---  
	---=================================================  
	---One of the 2 calls in dialogue_handler.c p0 is in a while-loop, and so is determined to also possibly be 0 - 15.  
	ADD_PED_TO_CONVERSATION = function(index, ped, p2) invoker.call(0x95D9F4BC443956E7, index, ped, p2) end,
	---  
	SET_POSITION_FOR_NULL_CONV_PED = function(p0, p1, p2, p3) invoker.call(0x33E3C6C6F2F0B506, p0, p1, p2, p3) end,
	---  
	SET_ENTITY_FOR_NULL_CONV_PED = function(p0, entity) invoker.call(0x892B6AB8F33606F5, p0, entity) end,
	---This native controls where the game plays audio from. By default the microphone is positioned on the player.  
	---When p0 is true the game will play audio from the 3 positions inputted.  
	---It is recommended to set all 3 positions to the same value as mixing different positions doesn't seem to work well.  
	---The scripts mostly use it with only one position such as in fbi3.c:   
	---AUDIO::SET_MICROPHONE_POSITION(true, ENTITY::GET_ENTITY_COORDS(iLocal_3091, true), ENTITY::GET_ENTITY_COORDS(iLocal_3091, true), ENTITY::GET_ENTITY_COORDS(iLocal_3091, true));  
	SET_MICROPHONE_POSITION = function(toggle, x1, y1, z1, x2, y2, z2, x3, y3, z3) invoker.call(0xB6AE90EDDE95C762, toggle, x1, y1, z1, x2, y2, z2, x3, y3, z3) end,
	---  
	SET_CONVERSATION_AUDIO_CONTROLLED_BY_ANIM = function(p0) invoker.call(0x0B568201DD99F0EB, p0) end,
	---  
	SET_CONVERSATION_AUDIO_PLACEHOLDER = function(p0) invoker.call(0x61631F5DF50D1C34, p0) end,
	---  
	START_SCRIPT_PHONE_CONVERSATION = function(p0, p1) invoker.call(0x252E5F915EABB675, p0, p1) end,
	---  
	PRELOAD_SCRIPT_PHONE_CONVERSATION = function(p0, p1) invoker.call(0x6004BCB0E226AAEA, p0, p1) end,
	---  
	START_SCRIPT_CONVERSATION = function(p0, p1, p2, p3) invoker.call(0x6B17C62C9635D2DC, p0, p1, p2, p3) end,
	---  
	PRELOAD_SCRIPT_CONVERSATION = function(p0, p1, p2, p3) invoker.call(0x3B3CAD6166916D87, p0, p1, p2, p3) end,
	---  
	START_PRELOADED_CONVERSATION = function() invoker.call(0x23641AFE870AF385) end,
	---  
	GET_IS_PRELOADED_CONVERSATION_READY = function() return invoker.call(0xE73364DB90778FFA).bool end,
	---  
	IS_SCRIPTED_CONVERSATION_ONGOING = function() return invoker.call(0x16754C556D2EDE3D).bool end,
	---  
	IS_SCRIPTED_CONVERSATION_LOADED = function() return invoker.call(0xDF0D54BE7A776737).bool end,
	---  
	GET_CURRENT_SCRIPTED_CONVERSATION_LINE = function() return invoker.call(0x480357EE890C295A).int end,
	---  
	PAUSE_SCRIPTED_CONVERSATION = function(p0) invoker.call(0x8530AD776CD72B12, p0) end,
	---  
	RESTART_SCRIPTED_CONVERSATION = function() invoker.call(0x9AEB285D1818C9AC) end,
	---  
	STOP_SCRIPTED_CONVERSATION = function(p0) return invoker.call(0xD79DEEFB53455EBA, p0).int end,
	---  
	SKIP_TO_NEXT_SCRIPTED_CONVERSATION_LINE = function() invoker.call(0x9663FE6B7A61EB00) end,
	---Example from carsteal3.c: AUDIO::INTERRUPT_CONVERSATION(PLAYER::PLAYER_PED_ID(), "CST4_CFAA", "FRANKLIN");  
	---Voicelines can be found in GTAV\x64\audio\sfx in files starting with "SS_" which seems to mean scripted speech.  
	INTERRUPT_CONVERSATION = function(ped, voiceline, speaker) invoker.call(0xA018A12E5C5C2FA6, ped, voiceline, speaker) end,
	---One call found in the b617d scripts:  
	---  
	---AUDIO::INTERRUPT_CONVERSATION_AND_PAUSE(NETWORK::NET_TO_PED(l_3989._f26F[0/*1*/]), "CONV_INTERRUPT_QUIT_IT", "LESTER");  
	INTERRUPT_CONVERSATION_AND_PAUSE = function(ped, p1, speaker) invoker.call(0x8A694D7A68F8DC38, ped, p1, speaker) end,
	---  
	GET_VARIATION_CHOSEN_FOR_SCRIPTED_LINE = function(p0) return invoker.call(0xAA19F5572C38B564, p0).int end,
	---  
	SET_NO_DUCKING_FOR_CONVERSATION = function(p0) invoker.call(0xB542DE8C3D1CB210, p0) end,
	---This native does absolutely nothing, just a nullsub  
	REGISTER_SCRIPT_WITH_AUDIO = function(p0) invoker.call(0xC6ED9D5092438D91, p0) end,
	---This native does absolutely nothing, just a nullsub  
	UNREGISTER_SCRIPT_WITH_AUDIO = function() invoker.call(0xA8638BE228D4751A) end,
	---All occurrences and usages found in b617d: https://pastebin.com/NzZZ2Tmm  
	---Full list of mission audio bank names by DurtyFree https://github.com/DurtyFree/gta-v-data-dumps/blob/master/missionAudioBankNames.json  
	---p2 is always -1  
	REQUEST_MISSION_AUDIO_BANK = function(audioBank, p1, p2) return invoker.call(0x7345BDD95E62E0F2, audioBank, p1, p2).bool end,
	---All occurrences and usages found in b617d, sorted alphabetically and identical lines removed: https://pastebin.com/XZ1tmGEz  
	---Full list of ambient audio bank names by DurtyFree https://github.com/DurtyFree/gta-v-data-dumps/blob/master/ambientAudioBankNames.json  
	---p2 is always -1  
	REQUEST_AMBIENT_AUDIO_BANK = function(audioBank, p1, p2) return invoker.call(0xFE02FFBED8CA9D99, audioBank, p1, p2).bool end,
	---All occurrences and usages found in b617d, sorted alphabetically and identical lines removed: https://pastebin.com/AkmDAVn6  
	---Full list of script audio bank names by DurtyFree https://github.com/DurtyFree/gta-v-data-dumps/blob/master/scriptAudioBankNames.json  
	---p2 is always -1  
	REQUEST_SCRIPT_AUDIO_BANK = function(audioBank, p1, p2) return invoker.call(0x2F844A8B08D76685, audioBank, p1, p2).bool end,
	---p2 is always -1  
	HINT_MISSION_AUDIO_BANK = function(audioBank, p1, p2) return invoker.call(0x40763EA7B9B783E7, audioBank, p1, p2).bool end,
	---p2 is always -1  
	HINT_AMBIENT_AUDIO_BANK = function(audioBank, p1, p2) return invoker.call(0x8F8C0E370AE62F5C, audioBank, p1, p2).bool end,
	---p2 is always -1  
	HINT_SCRIPT_AUDIO_BANK = function(audioBank, p1, p2) return invoker.call(0xFB380A29641EC31A, audioBank, p1, p2).bool end,
	---  
	RELEASE_MISSION_AUDIO_BANK = function() invoker.call(0x0EC92A1BF0857187) end,
	---  
	RELEASE_AMBIENT_AUDIO_BANK = function() invoker.call(0x65475A218FFAA93D) end,
	---Full list of script audio bank names by DurtyFree https://github.com/DurtyFree/gta-v-data-dumps/blob/master/scriptAudioBankNames.json  
	RELEASE_NAMED_SCRIPT_AUDIO_BANK = function(audioBank) invoker.call(0x77ED170667F50170, audioBank) end,
	---  
	RELEASE_SCRIPT_AUDIO_BANK = function() invoker.call(0x7A2D8AD0A9EB9C3F) end,
	---  
	UNHINT_AMBIENT_AUDIO_BANK = function() invoker.call(0x19AF7ED9B9D23058) end,
	---  
	UNHINT_SCRIPT_AUDIO_BANK = function() invoker.call(0x9AC92EED5E4793AB) end,
	---  
	UNHINT_NAMED_SCRIPT_AUDIO_BANK = function(audioBank) invoker.call(0x11579D940949C49E, audioBank) end,
	---  
	GET_SOUND_ID = function() return invoker.call(0x430386FE9BF80B45).int end,
	---  
	RELEASE_SOUND_ID = function(soundId) invoker.call(0x353FC880830B88FA, soundId) end,
	---All found occurrences in b617d, sorted alphabetically and identical lines removed: https://pastebin.com/A8Ny8AHZ  
	---  
	---Full list of audio / sound names by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/soundNames.json  
	PLAY_SOUND = function(soundId, audioName, audioRef, p3, p4, p5) invoker.call(0x7FF4944CC209192D, soundId, audioName, audioRef, p3, p4, p5) end,
	---List: https://pastebin.com/DCeRiaLJ  
	---  
	---All occurrences as of Cayo Perico Heist DLC (b2189), sorted alphabetically and identical lines removed: https://git.io/JtLxM  
	---  
	---Full list of audio / sound names by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/soundNames.json  
	PLAY_SOUND_FRONTEND = function(soundId, audioName, audioRef, p3) invoker.call(0x67C540AA08E4A6F5, soundId, audioName, audioRef, p3) end,
	---Only call found in the b617d scripts:  
	---  
	---AUDIO::PLAY_DEFERRED_SOUND_FRONTEND("BACK", "HUD_FREEMODE_SOUNDSET");  
	---  
	---Full list of audio / sound names by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/soundNames.json  
	PLAY_DEFERRED_SOUND_FRONTEND = function(soundName, soundsetName) invoker.call(0xCADA5A0D0702381E, soundName, soundsetName) end,
	---All found occurrences in b617d, sorted alphabetically and identical lines removed: https://pastebin.com/f2A7vTj0   
	---No changes made in b678d.  
	---  
	---gtaforums.com/topic/795622-audio-for-mods  
	---  
	---Full list of audio / sound names by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/soundNames.json  
	PLAY_SOUND_FROM_ENTITY = function(soundId, audioName, entity, audioRef, isNetwork, p5) invoker.call(0xE65F427EB70AB1ED, soundId, audioName, entity, audioRef, isNetwork, p5) end,
	---Only used with "formation_flying_blips_soundset" and "biker_formation_blips_soundset".  
	---p1 is always the model of p2  
	PLAY_SOUND_FROM_ENTITY_HASH = function(soundId, model, entity, soundSetHash, p4, p5) invoker.call(0x5B9853296731E88D, soundId, model, entity, soundSetHash, p4, p5) end,
	---All found occurrences in b617d, sorted alphabetically and identical lines removed: https://pastebin.com/eeFc5DiW  
	---  
	---gtaforums.com/topic/795622-audio-for-mods  
	---  
	---Full list of audio / sound names by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/soundNames.json  
	PLAY_SOUND_FROM_COORD = function(soundId, audioName, x, y, z, audioRef, isNetwork, range, p8) invoker.call(0x8D8686B622B88120, soundId, audioName, x, y, z, audioRef, isNetwork, range, p8) end,
	---  
	UPDATE_SOUND_COORD = function(soundId, x, y, z) invoker.call(0x7EC3C679D0E7E46B, soundId, x, y, z) end,
	---  
	STOP_SOUND = function(soundId) invoker.call(0xA3B0C41BA5CC0BB5, soundId) end,
	---Could this be used alongside either,   
	---SET_NETWORK_ID_EXISTS_ON_ALL_MACHINES or _SET_NETWORK_ID_SYNC_TO_PLAYER to make it so other players can hear the sound while online? It'd be a bit troll-fun to be able to play the Zancudo UFO creepy sounds globally.  
	GET_NETWORK_ID_FROM_SOUND_ID = function(soundId) return invoker.call(0x2DE3F0A134FFBC0D, soundId).int end,
	---  
	GET_SOUND_ID_FROM_NETWORK_ID = function(netId) return invoker.call(0x75262FD12D0A1C84, netId).int end,
	---  
	SET_VARIABLE_ON_SOUND = function(soundId, variable, p2) invoker.call(0xAD6B3148A78AE9B6, soundId, variable, p2) end,
	---From the scripts, p0:  
	---  
	---"ArmWrestlingIntensity",  
	---"INOUT",  
	---"Monkey_Stream",  
	---"ZoomLevel"  
	SET_VARIABLE_ON_STREAM = function(variable, p1) invoker.call(0x2F9D3834AEB9EF79, variable, p1) end,
	---  
	OVERRIDE_UNDERWATER_STREAM = function(p0, p1) invoker.call(0xF2A9CDABCEA04BD6, p0, p1) end,
	---AUDIO::SET_VARIABLE_ON_UNDER_WATER_STREAM("inTunnel", 1.0);  
	---AUDIO::SET_VARIABLE_ON_UNDER_WATER_STREAM("inTunnel", 0.0);  
	SET_VARIABLE_ON_UNDER_WATER_STREAM = function(variableName, value) invoker.call(0x733ADF241531E5C2, variableName, value) end,
	---  
	HAS_SOUND_FINISHED = function(soundId) return invoker.call(0xFCBDCE714A7C88E5, soundId).bool end,
	---Plays ambient speech. See also _0x444180DB.  
	---  
	---ped: The ped to play the ambient speech.  
	---speechName: Name of the speech to play, eg. "GENERIC_HI".  
	---speechParam: Can be one of the following:  
	---SPEECH_PARAMS_STANDARD  
	---SPEECH_PARAMS_ALLOW_REPEAT  
	---SPEECH_PARAMS_BEAT  
	---SPEECH_PARAMS_FORCE  
	---SPEECH_PARAMS_FORCE_FRONTEND  
	---SPEECH_PARAMS_FORCE_NO_REPEAT_FRONTEND  
	---SPEECH_PARAMS_FORCE_NORMAL  
	---SPEECH_PARAMS_FORCE_NORMAL_CLEAR  
	---SPEECH_PARAMS_FORCE_NORMAL_CRITICAL  
	---SPEECH_PARAMS_FORCE_SHOUTED  
	---SPEECH_PARAMS_FORCE_SHOUTED_CLEAR  
	---SPEECH_PARAMS_FORCE_SHOUTED_CRITICAL  
	---SPEECH_PARAMS_FORCE_PRELOAD_ONLY  
	---SPEECH_PARAMS_MEGAPHONE  
	---SPEECH_PARAMS_HELI  
	---SPEECH_PARAMS_FORCE_MEGAPHONE  
	---SPEECH_PARAMS_FORCE_HELI  
	---SPEECH_PARAMS_INTERRUPT  
	---SPEECH_PARAMS_INTERRUPT_SHOUTED  
	---SPEECH_PARAMS_INTERRUPT_SHOUTED_CLEAR  
	---SPEECH_PARAMS_INTERRUPT_SHOUTED_CRITICAL  
	---SPEECH_PARAMS_INTERRUPT_NO_FORCE  
	---SPEECH_PARAMS_INTERRUPT_FRONTEND  
	---SPEECH_PARAMS_INTERRUPT_NO_FORCE_FRONTEND  
	---SPEECH_PARAMS_ADD_BLIP  
	---SPEECH_PARAMS_ADD_BLIP_ALLOW_REPEAT  
	---SPEECH_PARAMS_ADD_BLIP_FORCE  
	---SPEECH_PARAMS_ADD_BLIP_SHOUTED  
	---SPEECH_PARAMS_ADD_BLIP_SHOUTED_FORCE  
	---SPEECH_PARAMS_ADD_BLIP_INTERRUPT  
	---SPEECH_PARAMS_ADD_BLIP_INTERRUPT_FORCE  
	---SPEECH_PARAMS_FORCE_PRELOAD_ONLY_SHOUTED  
	---SPEECH_PARAMS_FORCE_PRELOAD_ONLY_SHOUTED_CLEAR  
	---SPEECH_PARAMS_FORCE_PRELOAD_ONLY_SHOUTED_CRITICAL  
	---SPEECH_PARAMS_SHOUTED  
	---SPEECH_PARAMS_SHOUTED_CLEAR  
	---SPEECH_PARAMS_SHOUTED_CRITICAL  
	---  
	---Note: A list of Name and Parameters can be found here https://pastebin.com/1GZS5dCL  
	---  
	---Full list of speeches and voices names by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/speeches.json  
	PLAY_PED_AMBIENT_SPEECH_NATIVE = function(ped, speechName, speechParam, p3) invoker.call(0x8E04FEDD28D42462, ped, speechName, speechParam, p3) end,
	---Plays ambient speech. See also _0x5C57B85D.  
	---  
	---See PLAY_PED_AMBIENT_SPEECH_NATIVE for parameter specifications.  
	---  
	---Full list of speeches and voices names by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/speeches.json  
	PLAY_PED_AMBIENT_SPEECH_AND_CLONE_NATIVE = function(ped, speechName, speechParam, p3) invoker.call(0xC6941B4A3A8FBBB9, ped, speechName, speechParam, p3) end,
	---This is the same as PLAY_PED_AMBIENT_SPEECH_NATIVE and PLAY_PED_AMBIENT_SPEECH_AND_CLONE_NATIVE but it will allow you to play a speech file from a specific voice file. It works on players and all peds, even animals.  
	---  
	---EX (C#):  
	---GTA.Native.Function.Call(Hash.PLAY_PED_AMBIENT_SPEECH_WITH_VOICE_NATIVE, Game.Player.Character, "GENERIC_INSULT_HIGH", "s_m_y_sheriff_01_white_full_01", "SPEECH_PARAMS_FORCE_SHOUTED", 0);  
	---  
	---The first param is the ped you want to play it on, the second is the speech name, the third is the voice name, the fourth is the speech param, and the last param is usually always 0.  
	---  
	---Full list of speeches and voices names by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/speeches.json  
	PLAY_PED_AMBIENT_SPEECH_WITH_VOICE_NATIVE = function(ped, speechName, voiceName, speechParam, p4) invoker.call(0x3523634255FC3318, ped, speechName, voiceName, speechParam, p4) end,
	---Full list of speeches and voices names by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/speeches.json  
	PLAY_AMBIENT_SPEECH_FROM_POSITION_NATIVE = function(speechName, voiceName, x, y, z, speechParam) invoker.call(0xED640017ED337E45, speechName, voiceName, x, y, z, speechParam) end,
	---This native enables the audio flag "TrevorRageIsOverridden" and sets the voice effect to `voiceEffect`  
	OVERRIDE_TREVOR_RAGE = function(voiceEffect) invoker.call(0x13AD665062541A7E, voiceEffect) end,
	---  
	RESET_TREVOR_RAGE = function() invoker.call(0xE78503B10C4314E0) end,
	---  
	SET_PLAYER_ANGRY = function(ped, toggle) invoker.call(0xEA241BB04110F091, ped, toggle) end,
	---Needs another parameter [int p2]. The signature is PED::PLAY_PAIN(Ped ped, int painID, int p1, int p2);  
	---  
	---Last 2 parameters always seem to be 0.  
	---  
	---EX: Function.Call(Hash.PLAY_PAIN, TestPed, 6, 0, 0);  
	---  
	---Known Pain IDs  
	---________________________  
	---  
	---1 - Doesn't seem to do anything. Does NOT crash the game like previously said. (Latest patch)  
	---6 - Scream (Short)  
	---7 - Scared Scream (Kinda Long)  
	---8 - On Fire  
	---  
	PLAY_PAIN = function(ped, painID, p1, p3) invoker.call(0xBC9AE166038A5CEC, ped, painID, p1, p3) end,
	---  
	RELEASE_WEAPON_AUDIO = function() invoker.call(0xCE4AC0439F607045) end,
	---mode can be any of these:   
	---SLOWMO_T1_TRAILER_SMASH  
	---SLOWMO_T1_RAYFIRE_EXPLOSION  
	---SLOWMO_PROLOGUE_VAULT  
	---NIGEL_02_SLOWMO_SETTING  
	---JSH_EXIT_TUNNEL_SLOWMO  
	---SLOWMO_BIG_SCORE_JUMP  
	---SLOWMO_FIB4_TRUCK_SMASH  
	---SLOWMO_EXTREME_04  
	---SLOW_MO_METH_HOUSE_RAYFIRE  
	---BARRY_02_SLOWMO  
	---BARRY_01_SLOWMO  
	ACTIVATE_AUDIO_SLOWMO_MODE = function(mode) invoker.call(0xD01005D2BA2EB778, mode) end,
	---see ACTIVATE_AUDIO_SLOWMO_MODE for modes  
	DEACTIVATE_AUDIO_SLOWMO_MODE = function(mode) invoker.call(0xDDC635D5B3262C56, mode) end,
	---Audio List  
	---gtaforums.com/topic/795622-audio-for-mods/  
	---  
	---All found occurrences in b617d, sorted alphabetically and identical lines removed: https://pastebin.com/FTeAj4yZ  
	SET_AMBIENT_VOICE_NAME = function(ped, name) invoker.call(0x6C8065A3B780185B, ped, name) end,
	---  
	SET_AMBIENT_VOICE_NAME_HASH = function(ped, hash) invoker.call(0x9A53DED9921DE990, ped, hash) end,
	---  
	GET_AMBIENT_VOICE_NAME_HASH = function(ped) return invoker.call(0x5E203DA2BA15D436, ped).int end,
	---Assigns some ambient voice to the ped.  
	SET_PED_VOICE_FULL = function(ped) invoker.call(0x40CF0D12D142A9E8, ped) end,
	---  
	SET_PED_RACE_AND_VOICE_GROUP = function(ped, p1, voiceGroup) invoker.call(0x1B7ABE26CBCBF8C7, ped, p1, voiceGroup) end,
	---From the scripts:  
	---  
	---AUDIO::SET_PED_VOICE_GROUP(PLAYER::PLAYER_PED_ID(), MISC::GET_HASH_KEY("PAIGE_PVG"));  
	---AUDIO::SET_PED_VOICE_GROUP(PLAYER::PLAYER_PED_ID(), MISC::GET_HASH_KEY("TALINA_PVG"));  
	---AUDIO::SET_PED_VOICE_GROUP(PLAYER::PLAYER_PED_ID(), MISC::GET_HASH_KEY("FEMALE_LOST_BLACK_PVG"));  
	---AUDIO::SET_PED_VOICE_GROUP(PLAYER::PLAYER_PED_ID(), MISC::GET_HASH_KEY("FEMALE_LOST_WHITE_PVG"));  
	SET_PED_VOICE_GROUP = function(ped, voiceGroupHash) invoker.call(0x7CDC8C3B89F661B3, ped, voiceGroupHash) end,
	---Dat151RelType == 29  
	SET_PED_VOICE_GROUP_FROM_RACE_TO_PVG = function(ped, voiceGroupHash) invoker.call(0x0BABC1345ABBFB16, ped, voiceGroupHash) end,
	---BOOL p1: 0 = Female; 1 = Male  
	SET_PED_GENDER = function(ped, p1) invoker.call(0xA5342D390CDA41D6, ped, p1) end,
	---  
	STOP_CURRENT_PLAYING_SPEECH = function(ped) invoker.call(0x7A73D05A607734C7, ped) end,
	---  
	STOP_CURRENT_PLAYING_AMBIENT_SPEECH = function(ped) invoker.call(0xB8BEC0CA6F0EDB0F, ped) end,
	---  
	IS_AMBIENT_SPEECH_PLAYING = function(ped) return invoker.call(0x9072C8B49907BFAD, ped).bool end,
	---  
	IS_SCRIPTED_SPEECH_PLAYING = function(p0) return invoker.call(0xCC9AA18DCC7084F4, p0).bool end,
	---  
	IS_ANY_SPEECH_PLAYING = function(ped) return invoker.call(0x729072355FA39EC9, ped).bool end,
	---  
	IS_ANY_POSITIONAL_SPEECH_PLAYING = function() return invoker.call(0x30CA2EF91D15ADF8).bool end,
	---Checks if the ped can play the speech or has the speech file, p2 is usually false.  
	DOES_CONTEXT_EXIST_FOR_THIS_PED = function(ped, speechName, p2) return invoker.call(0x49B99BF3FDA89A7A, ped, speechName, p2).bool end,
	---  
	IS_PED_IN_CURRENT_CONVERSATION = function(ped) return invoker.call(0x049E937F18F4020C, ped).bool end,
	---Sets the ped drunk sounds.  Only works with PLAYER_PED_ID  
	---  
	---====================================================  
	---  
	---As mentioned above, this only sets the drunk sound to ped/player.  
	---  
	---To give the Ped a drunk effect with drunk walking animation try using SET_PED_MOVEMENT_CLIPSET  
	---  
	---Below is an example  
	---  
	---if (!Function.Call<bool>(Hash.HAS_ANIM_SET_LOADED, "move_m@drunk@verydrunk"))  
	---                {  
	---                    Function.Call(Hash.REQUEST_ANIM_SET, "move_m@drunk@verydrunk");  
	---                }  
	---                Function.Call(Hash.SET_PED_MOVEMENT_CLIPSET, Ped.Handle, "move_m@drunk@verydrunk", 0x3E800000);  
	---  
	---  
	---  
	---And to stop the effect use  
	---RESET_PED_MOVEMENT_CLIPSET  
	SET_PED_IS_DRUNK = function(ped, toggle) invoker.call(0x95D2D383D5396B8A, ped, toggle) end,
	---Plays sounds from a ped with chop model. For example it used to play bark or sniff sounds. p1 is always 3 or 4294967295 in decompiled scripts. By a quick disassembling I can assume that this arg is unused.  
	---This native is works only when you call it on the ped with right model (ac_chop only ?)  
	---Speech Name can be: CHOP_SNIFF_SEQ CHOP_WHINE CHOP_LICKS_MOUTH CHOP_PANT bark GROWL SNARL BARK_SEQ  
	PLAY_ANIMAL_VOCALIZATION = function(pedHandle, p1, speechName) invoker.call(0xEE066C7006C49C0A, pedHandle, p1, speechName) end,
	---  
	IS_ANIMAL_VOCALIZATION_PLAYING = function(pedHandle) return invoker.call(0xC265DF9FB44A9FBD, pedHandle).bool end,
	---mood can be 0 or 1 (it's not a boolean value!). Effects audio of the animal.  
	SET_ANIMAL_MOOD = function(animal, mood) invoker.call(0xCC97B29285B1DC3B, animal, mood) end,
	---  
	IS_MOBILE_PHONE_RADIO_ACTIVE = function() return invoker.call(0xB35CE999E8EF317E).bool end,
	---  
	SET_MOBILE_PHONE_RADIO_STATE = function(state) invoker.call(0xBF286C554784F3DF, state) end,
	---Returns 255 (radio off index) if the function fails.  
	GET_PLAYER_RADIO_STATION_INDEX = function() return invoker.call(0xE8AF77C4C06ADC93).int end,
	---Returns active radio station name  
	GET_PLAYER_RADIO_STATION_NAME = function() return invoker.call(0xF6D733C32076AD03).str end,
	---Converts radio station index to string. Use HUD::GET_FILENAME_FOR_AUDIO_CONVERSATION to get the user-readable text.  
	GET_RADIO_STATION_NAME = function(radioStation) return invoker.call(0xB28ECA15046CA8B9, radioStation).str end,
	---  
	GET_PLAYER_RADIO_STATION_GENRE = function() return invoker.call(0xA571991A7FE6CCEB).int end,
	---  
	IS_RADIO_RETUNING = function() return invoker.call(0xA151A7394A214E65).bool end,
	---  
	IS_RADIO_FADED_OUT = function() return invoker.call(0x0626A247D2405330).bool end,
	---Tune Forward...  
	SET_RADIO_RETUNE_UP = function() invoker.call(0xFF266D1D0EB1195D) end,
	---Tune Backwards...  
	SET_RADIO_RETUNE_DOWN = function() invoker.call(0xDD6BCF9E94425DF9) end,
	---List of radio stations that are in the wheel, in clockwise order, as of LS Tuners DLC: https://git.io/J8a3k  
	---An older list including hidden radio stations: https://pastebin.com/Kj9t38KF  
	SET_RADIO_TO_STATION_NAME = function(stationName) invoker.call(0xC69EDA28699D5107, stationName) end,
	---List of radio stations that are in the wheel, in clockwise order, as of LS Tuners DLC: https://git.io/J8a3k  
	---An older list including hidden radio stations: https://pastebin.com/Kj9t38KF  
	SET_VEH_RADIO_STATION = function(vehicle, radioStation) invoker.call(0x1B9C0099CB942AC6, vehicle, radioStation) end,
	---  
	SET_VEH_HAS_NORMAL_RADIO = function(vehicle) invoker.call(0x3E45765F3FBB582F, vehicle) end,
	---  
	IS_VEHICLE_RADIO_ON = function(vehicle) return invoker.call(0x0BE4BE946463F917, vehicle).bool end,
	---  
	SET_VEH_FORCED_RADIO_THIS_FRAME = function(vehicle) invoker.call(0xC1805D05E6D4FE10, vehicle) end,
	---Full list of static emitters by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/staticEmitters.json  
	SET_EMITTER_RADIO_STATION = function(emitterName, radioStation, p2) invoker.call(0xACF57305B12AF907, emitterName, radioStation, p2) end,
	---Example:  
	---AUDIO::SET_STATIC_EMITTER_ENABLED((Any*)"LOS_SANTOS_VANILLA_UNICORN_01_STAGE", false);    AUDIO::SET_STATIC_EMITTER_ENABLED((Any*)"LOS_SANTOS_VANILLA_UNICORN_02_MAIN_ROOM", false);    AUDIO::SET_STATIC_EMITTER_ENABLED((Any*)"LOS_SANTOS_VANILLA_UNICORN_03_BACK_ROOM", false);  
	---  
	---This turns off surrounding sounds not connected directly to peds.  
	---  
	---Full list of static emitters by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/staticEmitters.json  
	SET_STATIC_EMITTER_ENABLED = function(emitterName, toggle) invoker.call(0x399D2D3B33F1B8EB, emitterName, toggle) end,
	---Full list of static emitters by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/staticEmitters.json  
	LINK_STATIC_EMITTER_TO_ENTITY = function(emitterName, entity) invoker.call(0x651D3228960D08AF, emitterName, entity) end,
	---Sets radio station by index.  
	SET_RADIO_TO_STATION_INDEX = function(radioStation) invoker.call(0xA619B168B8A8570F, radioStation) end,
	---  
	SET_FRONTEND_RADIO_ACTIVE = function(active) invoker.call(0xF7F26C6E9CC9EBB8, active) end,
	---"news" that play on the radio after you've done something in story mode(?)  
	UNLOCK_MISSION_NEWS_STORY = function(newsStory) invoker.call(0xB165AB7C248B2DC1, newsStory) end,
	---  
	IS_MISSION_NEWS_STORY_UNLOCKED = function(newsStory) return invoker.call(0x66E49BF55B4B1874, newsStory).bool end,
	---  
	GET_AUDIBLE_MUSIC_TRACK_TEXT_ID = function() return invoker.call(0x50B196FC9ED6545B).int end,
	---  
	PLAY_END_CREDITS_MUSIC = function(play) invoker.call(0xCD536C4D33DCC900, play) end,
	---  
	SKIP_RADIO_FORWARD = function() invoker.call(0x6DDBBDD98E2E9C25) end,
	---  
	FREEZE_RADIO_STATION = function(radioStation) invoker.call(0x344F393B027E38C3, radioStation) end,
	---  
	UNFREEZE_RADIO_STATION = function(radioStation) invoker.call(0xFC00454CF60B91DD, radioStation) end,
	---  
	SET_RADIO_AUTO_UNFREEZE = function(toggle) invoker.call(0xC1AA9F53CE982990, toggle) end,
	---  
	SET_INITIAL_PLAYER_STATION = function(radioStation) invoker.call(0x88795F13FACDA88D, radioStation) end,
	---  
	SET_USER_RADIO_CONTROL_ENABLED = function(toggle) invoker.call(0x19F21E63AE6EAE4E, toggle) end,
	---Only found this one in the decompiled scripts:  
	---  
	---AUDIO::SET_RADIO_TRACK("RADIO_03_HIPHOP_NEW", "ARM1_RADIO_STARTS");  
	---  
	SET_RADIO_TRACK = function(radioStation, radioTrack) invoker.call(0xB39786F201FEE30B, radioStation, radioTrack) end,
	---  
	SET_RADIO_TRACK_WITH_START_OFFSET = function(radioStationName, mixName, p2) invoker.call(0x2CB0075110BE1E56, radioStationName, mixName, p2) end,
	---  
	SET_NEXT_RADIO_TRACK = function(radioName, radioTrack, p2, p3) invoker.call(0x55ECF4D13D9903B0, radioName, radioTrack, p2, p3) end,
	---  
	SET_VEHICLE_RADIO_LOUD = function(vehicle, toggle) invoker.call(0xBB6F1CAEC68B0BCE, vehicle, toggle) end,
	---  
	CAN_VEHICLE_RECEIVE_CB_RADIO = function(vehicle) return invoker.call(0x032A116663A4D5AC, vehicle).bool end,
	---  
	SET_MOBILE_RADIO_ENABLED_DURING_GAMEPLAY = function(toggle) invoker.call(0x1098355A16064BB3, toggle) end,
	---  
	DOES_PLAYER_VEH_HAVE_RADIO = function() return invoker.call(0x109697E2FFBAC8A1).bool end,
	---  
	IS_PLAYER_VEH_RADIO_ENABLE = function() return invoker.call(0x5F43D83FD6738741).bool end,
	---can't seem to enable radio on cop cars etc  
	SET_VEHICLE_RADIO_ENABLED = function(vehicle, toggle) invoker.call(0x3B988190C0AA6C0B, vehicle, toggle) end,
	---  
	SET_POSITIONED_PLAYER_VEHICLE_RADIO_EMITTER_ENABLED = function(p0) invoker.call(0xDA07819E452FFE8F, p0) end,
	---Examples:  
	---  
	---AUDIO::SET_CUSTOM_RADIO_TRACK_LIST("RADIO_01_CLASS_ROCK", "END_CREDITS_KILL_MICHAEL", 1);  
	---AUDIO::SET_CUSTOM_RADIO_TRACK_LIST("RADIO_01_CLASS_ROCK", "END_CREDITS_KILL_MICHAEL", 1);  
	---AUDIO::SET_CUSTOM_RADIO_TRACK_LIST("RADIO_01_CLASS_ROCK", "END_CREDITS_KILL_TREVOR", 1);  
	---AUDIO::SET_CUSTOM_RADIO_TRACK_LIST("RADIO_01_CLASS_ROCK", "END_CREDITS_SAVE_MICHAEL_TREVOR", 1);  
	---AUDIO::SET_CUSTOM_RADIO_TRACK_LIST("RADIO_01_CLASS_ROCK", "OFF_ROAD_RADIO_ROCK_LIST", 1);  
	---AUDIO::SET_CUSTOM_RADIO_TRACK_LIST("RADIO_06_COUNTRY", "MAGDEMO2_RADIO_DINGHY", 1);  
	---AUDIO::SET_CUSTOM_RADIO_TRACK_LIST("RADIO_16_SILVERLAKE", "SEA_RACE_RADIO_PLAYLIST", 1);  
	---AUDIO::SET_CUSTOM_RADIO_TRACK_LIST("RADIO_01_CLASS_ROCK", "OFF_ROAD_RADIO_ROCK_LIST", 1);  
	SET_CUSTOM_RADIO_TRACK_LIST = function(radioStation, trackListName, p2) invoker.call(0x4E404A9361F75BB2, radioStation, trackListName, p2) end,
	---3 calls in the b617d scripts, removed duplicate.  
	---  
	---AUDIO::CLEAR_CUSTOM_RADIO_TRACK_LIST("RADIO_16_SILVERLAKE");  
	---AUDIO::CLEAR_CUSTOM_RADIO_TRACK_LIST("RADIO_01_CLASS_ROCK");  
	CLEAR_CUSTOM_RADIO_TRACK_LIST = function(radioStation) invoker.call(0x1654F24A88A8E3FE, radioStation) end,
	---  
	GET_NUM_UNLOCKED_RADIO_STATIONS = function() return invoker.call(0xF1620ECB50E01DE7).int end,
	---  
	FIND_RADIO_STATION_INDEX = function(stationNameHash) return invoker.call(0x8D67489793FF428B, stationNameHash).int end,
	---6 calls in the b617d scripts, removed identical lines:  
	---  
	---AUDIO::SET_RADIO_STATION_MUSIC_ONLY("RADIO_01_CLASS_ROCK", 1);  
	---AUDIO::SET_RADIO_STATION_MUSIC_ONLY(AUDIO::GET_RADIO_STATION_NAME(10), 0);  
	---AUDIO::SET_RADIO_STATION_MUSIC_ONLY(AUDIO::GET_RADIO_STATION_NAME(10), 1);  
	SET_RADIO_STATION_MUSIC_ONLY = function(radioStation, toggle) invoker.call(0x774BD811F656A122, radioStation, toggle) end,
	---  
	SET_RADIO_FRONTEND_FADE_TIME = function(fadeTime) invoker.call(0x2C96CDB04FCA358E, fadeTime) end,
	---AUDIO::UNLOCK_RADIO_STATION_TRACK_LIST("RADIO_16_SILVERLAKE", "MIRRORPARK_LOCKED");  
	UNLOCK_RADIO_STATION_TRACK_LIST = function(radioStation, trackListName) invoker.call(0x031ACB6ABA18C729, radioStation, trackListName) end,
	---  
	LOCK_RADIO_STATION_TRACK_LIST = function(radioStation, trackListName) invoker.call(0xFF5E5EA2DCEEACF3, radioStation, trackListName) end,
	---Just a nullsub (i.e. does absolutely nothing) since build 1604.  
	UPDATE_UNLOCKABLE_DJ_RADIO_TRACKS = function(enableMixes) invoker.call(0x47AED84213A47510, enableMixes) end,
	---Disables the radio station (hides it from the radio wheel).  
	LOCK_RADIO_STATION = function(radioStationName, toggle) invoker.call(0x477D9DB48F889591, radioStationName, toggle) end,
	---Doesn't have an effect in Story Mode.  
	SET_RADIO_STATION_AS_FAVOURITE = function(radioStation, toggle) invoker.call(0x4CAFEBFA21EC188D, radioStation, toggle) end,
	---  
	IS_RADIO_STATION_FAVOURITED = function(radioStation) return invoker.call(0x2B1784DB08AFEA79, radioStation).bool end,
	---  
	GET_NEXT_AUDIBLE_BEAT = function(out1, out2, out3) return invoker.call(0xC64A06D939F826F5, out1, out2, out3).bool end,
	---Changes start time of a tracklist (milliseconds)  
	---R* uses a random int: MISC::GET_RANDOM_INT_IN_RANGE(0, 13) * 60000)  
	FORCE_MUSIC_TRACK_LIST = function(radioStation, trackListName, milliseconds) invoker.call(0x4E0AF9114608257C, radioStation, trackListName, milliseconds) end,
	---  
	GET_CURRENT_TRACK_PLAY_TIME = function(radioStationName) return invoker.call(0x3E65CDE5215832C1, radioStationName).int end,
	---  
	GET_CURRENT_TRACK_SOUND_NAME = function(radioStationName) return invoker.call(0x34D66BC058019CE0, radioStationName).int end,
	---  
	SET_VEHICLE_MISSILE_WARNING_ENABLED = function(vehicle, toggle) invoker.call(0xF3365489E0DD50F9, vehicle, toggle) end,
	---Full list of ambient zones by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/ambientZones.json  
	SET_AMBIENT_ZONE_STATE = function(zoneName, p1, p2) invoker.call(0xBDA07E5950085E46, zoneName, p1, p2) end,
	---This function also has a p2, unknown. Signature AUDIO::CLEAR_AMBIENT_ZONE_STATE(const char* zoneName, bool p1, Any p2);  
	---  
	---Still needs more research.  
	---  
	---Full list of ambient zones by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/ambientZones.json  
	CLEAR_AMBIENT_ZONE_STATE = function(zoneName, p1) invoker.call(0x218DD44AAAC964FF, zoneName, p1) end,
	---  
	SET_AMBIENT_ZONE_LIST_STATE = function(ambientZone, p1, p2) invoker.call(0x9748FA4DE50CCE3E, ambientZone, p1, p2) end,
	---  
	CLEAR_AMBIENT_ZONE_LIST_STATE = function(ambientZone, p1) invoker.call(0x120C48C614909FA4, ambientZone, p1) end,
	---Full list of ambient zones by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/ambientZones.json  
	SET_AMBIENT_ZONE_STATE_PERSISTENT = function(ambientZone, p1, p2) invoker.call(0x1D6650420CEC9D3B, ambientZone, p1, p2) end,
	---Full list of ambient zones by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/ambientZones.json  
	SET_AMBIENT_ZONE_LIST_STATE_PERSISTENT = function(ambientZone, p1, p2) invoker.call(0xF3638DAE8C4045E1, ambientZone, p1, p2) end,
	---Full list of ambient zones by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/ambientZones.json  
	IS_AMBIENT_ZONE_ENABLED = function(ambientZone) return invoker.call(0x01E2817A479A7F9B, ambientZone).bool end,
	---  
	REFRESH_CLOSEST_OCEAN_SHORELINE = function() invoker.call(0x5D2BFAAB8D956E0E) end,
	---All occurrences found in b617d, sorted alphabetically and identical lines removed:   
	---  
	---AUDIO::SET_CUTSCENE_AUDIO_OVERRIDE("_AK");  
	---AUDIO::SET_CUTSCENE_AUDIO_OVERRIDE("_CUSTOM");  
	---AUDIO::SET_CUTSCENE_AUDIO_OVERRIDE("_TOOTHLESS");  
	---Full list of cutscene names by DurtyFree https://github.com/DurtyFree/gta-v-data-dumps/blob/master/cutsceneNames.json  
	SET_CUTSCENE_AUDIO_OVERRIDE = function(name) invoker.call(0x3B4BF5F0859204D9, name) end,
	---  
	SET_VARIABLE_ON_SYNCH_SCENE_AUDIO = function(variableName, value) invoker.call(0xBCC29F935ED07688, variableName, value) end,
	---Plays the given police radio message.  
	---  
	---All found occurrences in b617d, sorted alphabetically and identical lines removed: https://pastebin.com/GBnsQ5hr  
	---Full list of police report names by DurtyFree https://github.com/DurtyFree/gta-v-data-dumps/blob/master/policeReportNames.json  
	PLAY_POLICE_REPORT = function(name, p1) return invoker.call(0xDFEBD56D9BD1EB16, name, p1).int end,
	---  
	CANCEL_ALL_POLICE_REPORTS = function() invoker.call(0xB4F90FAF7670B16F) end,
	---Plays the siren sound of a vehicle which is otherwise activated when fastly double-pressing the horn key.  
	---Only works on vehicles with a police siren.  
	BLIP_SIREN = function(vehicle) invoker.call(0x1B9025BDA76822B6, vehicle) end,
	---Overrides the vehicle's horn hash.  
	---When changing this hash on a vehicle, it will not return the 'overwritten' hash. It will still always return the default horn hash (same as GET_VEHICLE_DEFAULT_HORN)  
	---  
	---vehicle - the vehicle whose horn should be overwritten  
	OVERRIDE_VEH_HORN = function(vehicle, override, hornHash) invoker.call(0x3CDC1E622CCE0356, vehicle, override, hornHash) end,
	---Checks whether the horn of a vehicle is currently played.  
	IS_HORN_ACTIVE = function(vehicle) return invoker.call(0x9D6BFC12B05C6121, vehicle).bool end,
	---Makes pedestrians sound their horn longer, faster and more agressive when they use their horn.  
	SET_AGGRESSIVE_HORNS = function(toggle) invoker.call(0x395BF71085D1B1D9, toggle) end,
	---Does nothing (it's a nullsub).  
	SET_RADIO_POSITION_AUDIO_MUTE = function(p0) invoker.call(0x02E93C796ABD3A97, p0) end,
	---  
	SET_VEHICLE_CONVERSATIONS_PERSIST = function(p0, p1) invoker.call(0x58BB377BEC7CD5F4, p0, p1) end,
	---  
	SET_VEHICLE_CONVERSATIONS_PERSIST_NEW = function(p0, p1, p2) invoker.call(0x9BD7BD55E4533183, p0, p1, p2) end,
	---  
	IS_STREAM_PLAYING = function() return invoker.call(0xD11FA52EB849D978).bool end,
	---  
	GET_STREAM_PLAY_TIME = function() return invoker.call(0x4E72BBDBCA58A3DB).int end,
	---Example:  
	---AUDIO::LOAD_STREAM("CAR_STEAL_1_PASSBY", "CAR_STEAL_1_SOUNDSET");  
	---  
	---All found occurrences in the b678d decompiled scripts: https://pastebin.com/3rma6w5w  
	---  
	---Stream names often ends with "_MASTER", "_SMALL" or "_STREAM". Also "_IN", "_OUT" and numbers.     
	---  
	---soundSet is often set to 0 in the scripts. These are common to end the soundSets: "_SOUNDS", "_SOUNDSET" and numbers.  
	---  
	---Full list of audio / sound names by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/soundNames.json  
	LOAD_STREAM = function(streamName, soundSet) return invoker.call(0x1F1F957154EC51DF, streamName, soundSet).bool end,
	---Example:  
	---AUDIO::LOAD_STREAM_WITH_START_OFFSET("STASH_TOXIN_STREAM", 2400, "FBI_05_SOUNDS");  
	---  
	---Only called a few times in the scripts.  
	---  
	---Full list of audio / sound names by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/soundNames.json  
	LOAD_STREAM_WITH_START_OFFSET = function(streamName, startOffset, soundSet) return invoker.call(0x59C16B79F53B3712, streamName, startOffset, soundSet).bool end,
	---  
	PLAY_STREAM_FROM_PED = function(ped) invoker.call(0x89049DD63C08B5D1, ped) end,
	---  
	PLAY_STREAM_FROM_VEHICLE = function(vehicle) invoker.call(0xB70374A758007DFA, vehicle) end,
	---Used with AUDIO::LOAD_STREAM  
	---  
	---Example from finale_heist2b.c4:  
	---TASK::TASK_SYNCHRONIZED_SCENE(l_4C8[2/*14*/], l_4C8[2/*14*/]._f7, l_30A, "push_out_vault_l", 4.0, -1.5, 5, 713, 4.0, 0);  
	---                    PED::SET_SYNCHRONIZED_SCENE_PHASE(l_4C8[2/*14*/]._f7, 0.0);  
	---                    PED::FORCE_PED_AI_AND_ANIMATION_UPDATE(l_4C8[2/*14*/], 0, 0);  
	---                    PED::SET_PED_COMBAT_ATTRIBUTES(l_4C8[2/*14*/], 38, 1);  
	---                    PED::SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(l_4C8[2/*14*/], 1);  
	---                    if (AUDIO::LOAD_STREAM("Gold_Cart_Push_Anim_01", "BIG_SCORE_3B_SOUNDS")) {  
	---                        AUDIO::PLAY_STREAM_FROM_OBJECT(l_36F[0/*1*/]);  
	---                    }  
	PLAY_STREAM_FROM_OBJECT = function(object) invoker.call(0xEBAA9B64D76356FD, object) end,
	---  
	PLAY_STREAM_FRONTEND = function() invoker.call(0x58FCE43488F9F5F4) end,
	---  
	PLAY_STREAM_FROM_POSITION = function(x, y, z) invoker.call(0x21442F412E8DE56B, x, y, z) end,
	---  
	STOP_STREAM = function() invoker.call(0xA4718A1419D18151) end,
	---  
	STOP_PED_SPEAKING = function(ped, shaking) invoker.call(0x9D64D7405520E3D3, ped, shaking) end,
	---  
	BLOCK_ALL_SPEECH_FROM_PED = function(ped, p1, p2) invoker.call(0xF8AD2EED7C47E8FE, ped, p1, p2) end,
	---  
	STOP_PED_SPEAKING_SYNCED = function(ped, p1) invoker.call(0xAB6781A5F3101470, ped, p1) end,
	---  
	DISABLE_PED_PAIN_AUDIO = function(ped, toggle) invoker.call(0xA9A41C1E940FB0E8, ped, toggle) end,
	---Common in the scripts:  
	---AUDIO::IS_AMBIENT_SPEECH_DISABLED(PLAYER::PLAYER_PED_ID());  
	IS_AMBIENT_SPEECH_DISABLED = function(ped) return invoker.call(0x932C2D096A2C3FFF, ped).bool end,
	---  
	BLOCK_SPEECH_CONTEXT_GROUP = function(p0, p1) invoker.call(0xA8A7D434AFB4B97B, p0, p1) end,
	---  
	UNBLOCK_SPEECH_CONTEXT_GROUP = function(p0) invoker.call(0x2ACABED337622DF2, p0) end,
	---  
	SET_SIREN_WITH_NO_DRIVER = function(vehicle, toggle) invoker.call(0x1FEF0683B96EBCF2, vehicle, toggle) end,
	---  
	SET_SIREN_BYPASS_MP_DRIVER_CHECK = function(vehicle, toggle) invoker.call(0xF584CF8529B51434, vehicle, toggle) end,
	---  
	TRIGGER_SIREN_AUDIO = function(vehicle) invoker.call(0x66C3FB05206041BA, vehicle) end,
	---  
	SET_HORN_PERMANENTLY_ON = function(vehicle) invoker.call(0x9C11908013EA4715, vehicle) end,
	---  
	SET_HORN_ENABLED = function(vehicle, toggle) invoker.call(0x76D683C108594D0E, vehicle, toggle) end,
	---  
	SET_AUDIO_VEHICLE_PRIORITY = function(vehicle, p1) invoker.call(0xE5564483E407F914, vehicle, p1) end,
	---  
	SET_HORN_PERMANENTLY_ON_TIME = function(vehicle, time) invoker.call(0x9D3AF56E94C9AE98, vehicle, time) end,
	---  
	USE_SIREN_AS_HORN = function(vehicle, toggle) invoker.call(0xFA932DE350266EF8, vehicle, toggle) end,
	---This native sets the audio of the specified vehicle to the audioName (p1).  
	---  
	---Use the audioNameHash found in vehicles.meta  
	---  
	---Example:  
	---_SET_VEHICLE_AUDIO(veh, "ADDER");  
	---The selected vehicle will now have the audio of the Adder.  
	FORCE_USE_AUDIO_GAME_OBJECT = function(vehicle, audioName) invoker.call(0x4F0C413926060B38, vehicle, audioName) end,
	---  
	PRELOAD_VEHICLE_AUDIO_BANK = function(vehicleModel) invoker.call(0xCA4CEA6AE0000A7E, vehicleModel) end,
	---  
	SET_VEHICLE_STARTUP_REV_SOUND = function(vehicle, p1, p2) invoker.call(0xF1F8157B8C3F171C, vehicle, p1, p2) end,
	---  
	RESET_VEHICLE_STARTUP_REV_SOUND = function(vehicle) invoker.call(0xD2DCCD8E16E20997, vehicle) end,
	---  
	SET_VEHICLE_FORCE_REVERSE_WARNING = function(p0, p1) invoker.call(0x97FFB4ADEED08066, p0, p1) end,
	---  
	IS_VEHICLE_AUDIBLY_DAMAGED = function(vehicle) return invoker.call(0x5DB8010EE71FDEF2, vehicle).bool end,
	---  
	SET_VEHICLE_AUDIO_ENGINE_DAMAGE_FACTOR = function(vehicle, damageFactor) invoker.call(0x59E7B488451F4D3A, vehicle, damageFactor) end,
	---intensity: 0.0f - 1.0f, only used once with 1.0f in R* Scripts (nigel2)  
	---Makes an engine rattling noise when you decelerate, you need to be going faster to hear lower values  
	SET_VEHICLE_AUDIO_BODY_DAMAGE_FACTOR = function(vehicle, intensity) invoker.call(0x01BB4D577D38BD9E, vehicle, intensity) end,
	---Called together with SET_VEHICLE_TYRES_CAN_BURST  
	_FORCE_VEHICLE_ENGINE_SYNTH = function(vehicle, force) invoker.call(0xEB7D0E1FCC8FE17A, vehicle, force) end,
	---  
	ENABLE_VEHICLE_FANBELT_DAMAGE = function(vehicle, toggle) invoker.call(0x1C073274E065C6D2, vehicle, toggle) end,
	---  
	ENABLE_VEHICLE_EXHAUST_POPS = function(vehicle, toggle) invoker.call(0x2BE4BC731D039D5A, vehicle, toggle) end,
	---SET_VEHICLE_BOOST_ACTIVE(vehicle, 1, 0);  
	---SET_VEHICLE_BOOST_ACTIVE(vehicle, 0, 0);   
	---  
	---Will give a boost-soundeffect.  
	SET_VEHICLE_BOOST_ACTIVE = function(vehicle, toggle) invoker.call(0x4A04DE7CAB2739A1, vehicle, toggle) end,
	---  
	SET_PLAYER_VEHICLE_ALARM_AUDIO_ACTIVE = function(vehicle, toggle) invoker.call(0x6FDDAD856E36988A, vehicle, toggle) end,
	---  
	SET_SCRIPT_UPDATE_DOOR_AUDIO = function(doorHash, toggle) invoker.call(0x06C0023BED16DD6B, doorHash, toggle) end,
	---doorId: see SET_VEHICLE_DOOR_SHUT  
	PLAY_VEHICLE_DOOR_OPEN_SOUND = function(vehicle, doorId) invoker.call(0x3A539D52857EA82D, vehicle, doorId) end,
	---doorId: see SET_VEHICLE_DOOR_SHUT  
	PLAY_VEHICLE_DOOR_CLOSE_SOUND = function(vehicle, doorId) invoker.call(0x62A456AA4769EF34, vehicle, doorId) end,
	---Works for planes only.  
	ENABLE_STALL_WARNING_SOUNDS = function(vehicle, toggle) invoker.call(0xC15907D667F7CFB2, vehicle, toggle) end,
	---  
	_ENABLE_DRAG_RACE_STATIONARY_WARNING_SOUNDS = function(vehicle, enable) invoker.call(0xBEFB80290414FD4F, vehicle, enable) end,
	---Hardcoded to return 1  
	IS_GAME_IN_CONTROL_OF_MUSIC = function() return invoker.call(0x6D28DC1671E334FD).bool end,
	---  
	SET_GPS_ACTIVE = function(active) invoker.call(0x3BD3F52BA9B1E4E8, active) end,
	---Called 38 times in the scripts. There are 5 different audioNames used.  
	--- One unknown removed below.  
	---  
	---AUDIO::PLAY_MISSION_COMPLETE_AUDIO("DEAD");  
	---AUDIO::PLAY_MISSION_COMPLETE_AUDIO("FRANKLIN_BIG_01");  
	---AUDIO::PLAY_MISSION_COMPLETE_AUDIO("GENERIC_FAILED");  
	---AUDIO::PLAY_MISSION_COMPLETE_AUDIO("TREVOR_SMALL_01");  
	PLAY_MISSION_COMPLETE_AUDIO = function(audioName) invoker.call(0xB138AAB8A70D3C69, audioName) end,
	---  
	IS_MISSION_COMPLETE_PLAYING = function() return invoker.call(0x19A30C23F5827F8A).bool end,
	---  
	IS_MISSION_COMPLETE_READY_FOR_UI = function() return invoker.call(0x6F259F82D873B8B8).bool end,
	---  
	BLOCK_DEATH_JINGLE = function(toggle) invoker.call(0xF154B8D1775B2DEC, toggle) end,
	---Used to prepare a scene where the surrounding sound is muted or a bit changed. This does not play any sound.  
	---  
	---List of all usable scene names found in b617d. Sorted alphabetically and identical names removed: https://pastebin.com/MtM9N9CC  
	---Full list of audio scene names by DurtyFree https://github.com/DurtyFree/gta-v-data-dumps/blob/master/audioSceneNames.json  
	START_AUDIO_SCENE = function(scene) return invoker.call(0x013A80FC08F6E4F2, scene).bool end,
	---Full list of audio scene names by DurtyFree https://github.com/DurtyFree/gta-v-data-dumps/blob/master/audioSceneNames.json  
	STOP_AUDIO_SCENE = function(scene) invoker.call(0xDFE8422B3B94E688, scene) end,
	---  
	STOP_AUDIO_SCENES = function() invoker.call(0xBAC7FC81A75EC1A1) end,
	---Full list of audio scene names by DurtyFree https://github.com/DurtyFree/gta-v-data-dumps/blob/master/audioSceneNames.json  
	IS_AUDIO_SCENE_ACTIVE = function(scene) return invoker.call(0xB65B60556E2A9225, scene).bool end,
	---Full list of audio scene names by DurtyFree https://github.com/DurtyFree/gta-v-data-dumps/blob/master/audioSceneNames.json  
	SET_AUDIO_SCENE_VARIABLE = function(scene, variable, value) invoker.call(0xEF21A9EF089A2668, scene, variable, value) end,
	---  
	SET_AUDIO_SCRIPT_CLEANUP_TIME = function(time) invoker.call(0xA5F377B175A699C5, time) end,
	---All found occurrences in b678d:  
	---https://pastebin.com/ceu67jz8  
	ADD_ENTITY_TO_AUDIO_MIX_GROUP = function(entity, groupName, p2) invoker.call(0x153973AB99FE8980, entity, groupName, p2) end,
	---  
	REMOVE_ENTITY_FROM_AUDIO_MIX_GROUP = function(entity, p1) invoker.call(0x18EB48CFC41F2EA0, entity, p1) end,
	---  
	AUDIO_IS_MUSIC_PLAYING = function() return invoker.call(0x845FFC3A4FEEFA3E).bool end,
	---This is an alias of AUDIO_IS_MUSIC_PLAYING.  
	AUDIO_IS_SCRIPTED_MUSIC_PLAYING = function() return invoker.call(0x2DD39BF3E2F9C47F).bool end,
	---All music event names found in the b617d scripts: https://pastebin.com/GnYt0R3P  
	---Full list of music event names by DurtyFree https://github.com/DurtyFree/gta-v-data-dumps/blob/master/musicEventNames.json  
	PREPARE_MUSIC_EVENT = function(eventName) return invoker.call(0x1E5185B72EF5158A, eventName).bool end,
	---All music event names found in the b617d scripts: https://pastebin.com/GnYt0R3P  
	---Full list of music event names by DurtyFree https://github.com/DurtyFree/gta-v-data-dumps/blob/master/musicEventNames.json  
	CANCEL_MUSIC_EVENT = function(eventName) return invoker.call(0x5B17A90291133DA5, eventName).bool end,
	---List of all usable event names found in b617d used with this native. Sorted alphabetically and identical names removed: https://pastebin.com/RzDFmB1W  
	---  
	---All music event names found in the b617d scripts: https://pastebin.com/GnYt0R3P  
	---Full list of music event names by DurtyFree https://github.com/DurtyFree/gta-v-data-dumps/blob/master/musicEventNames.json  
	TRIGGER_MUSIC_EVENT = function(eventName) return invoker.call(0x706D57B0F50DA710, eventName).bool end,
	---  
	IS_MUSIC_ONESHOT_PLAYING = function() return invoker.call(0xA097AB275061FB21).bool end,
	---  
	GET_MUSIC_PLAYTIME = function() return invoker.call(0xE7A0D23DC414507B).int end,
	---  
	SET_GLOBAL_RADIO_SIGNAL_LEVEL = function(p0) invoker.call(0x159B7318403A1CD8, p0) end,
	---  
	RECORD_BROKEN_GLASS = function(x, y, z, radius) invoker.call(0xFBE20329593DEC9D, x, y, z, radius) end,
	---  
	CLEAR_ALL_BROKEN_GLASS = function() invoker.call(0xB32209EFFDC04913) end,
	---  
	SCRIPT_OVERRIDES_WIND_ELEVATION = function(p0, p1) invoker.call(0x70B8EC8FC108A634, p0, p1) end,
	---  
	SET_PED_WALLA_DENSITY = function(p0, p1) invoker.call(0x149AEE66F0CB3A99, p0, p1) end,
	---  
	SET_PED_INTERIOR_WALLA_DENSITY = function(p0, p1) invoker.call(0x8BF907833BE275DE, p0, p1) end,
	---  
	FORCE_PED_PANIC_WALLA = function() invoker.call(0x062D5EAD4DA2FA6A) end,
	---Example:  
	---  
	---bool prepareAlarm = AUDIO::PREPARE_ALARM("PORT_OF_LS_HEIST_FORT_ZANCUDO_ALARMS");  
	---Full list of alarm names by DurtyFree https://github.com/DurtyFree/gta-v-data-dumps/blob/master/alarmSounds.json  
	PREPARE_ALARM = function(alarmName) return invoker.call(0x9D74AE343DB65533, alarmName).bool end,
	---Example:  
	---  
	---This will start the alarm at Fort Zancudo.  
	---  
	---AUDIO::START_ALARM("PORT_OF_LS_HEIST_FORT_ZANCUDO_ALARMS", 1);  
	---  
	---First parameter (char) is the name of the alarm.  
	---Second parameter (bool) is unknown, it does not seem to make a difference if this one is 0 or 1.  
	---  
	-------------  
	---  
	---It DOES make a difference but it has to do with the duration or something I dunno yet  
	---  
	-------------  
	---  
	--- Found in the b617d scripts:  
	---  
	--- AUDIO::START_ALARM("AGENCY_HEIST_FIB_TOWER_ALARMS", 0);  
	--- AUDIO::START_ALARM("AGENCY_HEIST_FIB_TOWER_ALARMS_UPPER", 1);  
	--- AUDIO::START_ALARM("AGENCY_HEIST_FIB_TOWER_ALARMS_UPPER_B", 0);  
	--- AUDIO::START_ALARM("BIG_SCORE_HEIST_VAULT_ALARMS", a_0);  
	--- AUDIO::START_ALARM("FBI_01_MORGUE_ALARMS", 1);  
	--- AUDIO::START_ALARM("FIB_05_BIOTECH_LAB_ALARMS", 0);  
	--- AUDIO::START_ALARM("JEWEL_STORE_HEIST_ALARMS", 0);  
	--- AUDIO::START_ALARM("PALETO_BAY_SCORE_ALARM", 1);  
	--- AUDIO::START_ALARM("PALETO_BAY_SCORE_CHICKEN_FACTORY_ALARM", 0);  
	--- AUDIO::START_ALARM("PORT_OF_LS_HEIST_FORT_ZANCUDO_ALARMS", 1);  
	--- AUDIO::START_ALARM("PORT_OF_LS_HEIST_SHIP_ALARMS", 0);  
	--- AUDIO::START_ALARM("PRISON_ALARMS", 0);  
	--- AUDIO::START_ALARM("PROLOGUE_VAULT_ALARMS", 0);  
	---Full list of alarm names by DurtyFree https://github.com/DurtyFree/gta-v-data-dumps/blob/master/alarmSounds.json  
	START_ALARM = function(alarmName, p2) invoker.call(0x0355EF116C4C97B2, alarmName, p2) end,
	---Example:  
	---  
	---This will stop the alarm at Fort Zancudo.  
	---  
	---AUDIO::STOP_ALARM("PORT_OF_LS_HEIST_FORT_ZANCUDO_ALARMS", 1);  
	---  
	---First parameter (char) is the name of the alarm.  
	---Second parameter (bool) has to be true (1) to have any effect.  
	---Full list of alarm names by DurtyFree https://github.com/DurtyFree/gta-v-data-dumps/blob/master/alarmSounds.json  
	STOP_ALARM = function(alarmName, toggle) invoker.call(0xA1CADDCD98415A41, alarmName, toggle) end,
	---  
	STOP_ALL_ALARMS = function(stop) invoker.call(0x2F794A877ADD4C92, stop) end,
	---Example:  
	---  
	---bool playing = AUDIO::IS_ALARM_PLAYING("PORT_OF_LS_HEIST_FORT_ZANCUDO_ALARMS");  
	---Full list of alarm names by DurtyFree https://github.com/DurtyFree/gta-v-data-dumps/blob/master/alarmSounds.json  
	IS_ALARM_PLAYING = function(alarmName) return invoker.call(0x226435CB96CCFC8C, alarmName).bool end,
	---Returns hash of default vehicle horn  
	---  
	---Hash is stored in audVehicleAudioEntity  
	GET_VEHICLE_DEFAULT_HORN = function(vehicle) return invoker.call(0x02165D55000219AC, vehicle).int end,
	---  
	GET_VEHICLE_DEFAULT_HORN_IGNORE_MODS = function(vehicle) return invoker.call(0xACB5DCCA1EC76840, vehicle).int end,
	---  
	RESET_PED_AUDIO_FLAGS = function(ped) invoker.call(0xF54BB7B61036F335, ped) end,
	---Enables/disables ped's "loud" footstep sound.  
	SET_PED_FOOTSTEPS_EVENTS_ENABLED = function(ped, toggle) invoker.call(0x0653B735BFBDFE87, ped, toggle) end,
	---Enables/disables ped's "quiet" footstep sound.  
	SET_PED_CLOTH_EVENTS_ENABLED = function(ped, toggle) invoker.call(0x29DA3CA8D8B2692D, ped, toggle) end,
	---Sets audio flag "OverridePlayerGroundMaterial"  
	OVERRIDE_PLAYER_GROUND_MATERIAL = function(hash, toggle) invoker.call(0xD2CC78CD3D0B50F9, hash, toggle) end,
	---  
	USE_FOOTSTEP_SCRIPT_SWEETENERS = function(ped, p1, hash) invoker.call(0xBF4DC1784BE94DFA, ped, p1, hash) end,
	---Sets audio flag "OverrideMicrophoneSettings"  
	OVERRIDE_MICROPHONE_SETTINGS = function(hash, toggle) invoker.call(0x75773E11BA459E90, hash, toggle) end,
	---  
	FREEZE_MICROPHONE = function() invoker.call(0xD57AAAE0E2214D11) end,
	---If value is set to true, and ambient siren sound will be played.  
	---Appears to enable/disable an audio flag.  
	DISTANT_COP_CAR_SIRENS = function(value) invoker.call(0x552369F549563AD5, value) end,
	---  
	SET_SIREN_CAN_BE_CONTROLLED_BY_AUDIO = function(vehicle, p1) invoker.call(0x43FA0DFC5DF87815, vehicle, p1) end,
	---  
	ENABLE_STUNT_JUMP_AUDIO = function() invoker.call(0xB81CF134AEB56FFB) end,
	---Possible flag names:  
	---"ActivateSwitchWheelAudio"  
	---"AllowAmbientSpeechInSlowMo"  
	---"AllowCutsceneOverScreenFade"  
	---"AllowForceRadioAfterRetune"  
	---"AllowPainAndAmbientSpeechToPlayDuringCutscene"  
	---"AllowPlayerAIOnMission"  
	---"AllowPoliceScannerWhenPlayerHasNoControl"  
	---"AllowRadioDuringSwitch"  
	---"AllowRadioOverScreenFade"  
	---"AllowScoreAndRadio"  
	---"AllowScriptedSpeechInSlowMo"  
	---"AvoidMissionCompleteDelay"  
	---"DisableAbortConversationForDeathAndInjury"  
	---"DisableAbortConversationForRagdoll"  
	---"DisableBarks"  
	---"DisableFlightMusic"  
	---"DisableReplayScriptStreamRecording"  
	---"EnableHeadsetBeep"  
	---"ForceConversationInterrupt"  
	---"ForceSeamlessRadioSwitch"  
	---"ForceSniperAudio"  
	---"FrontendRadioDisabled"  
	---"HoldMissionCompleteWhenPrepared"  
	---"IsDirectorModeActive"  
	---"IsPlayerOnMissionForSpeech"  
	---"ListenerReverbDisabled"  
	---"LoadMPData"  
	---"MobileRadioInGame"  
	---"OnlyAllowScriptTriggerPoliceScanner"  
	---"PlayMenuMusic"  
	---"PoliceScannerDisabled"  
	---"ScriptedConvListenerMaySpeak"  
	---"SpeechDucksScore"  
	---"SuppressPlayerScubaBreathing"  
	---"WantedMusicDisabled"  
	---"WantedMusicOnMission"  
	---  
	----------------------------------  
	---No added flag names between b393d and b573d, including b573d.  
	---  
	---#######################################################################  
	---  
	---"IsDirectorModeActive" is an audio flag which will allow you to play speech infinitely without any pauses like in Director Mode.  
	---  
	--------------------------------------------------------------------------  
	---  
	---All flag IDs and hashes:  
	---  
	---ID: 00 | Hash: 0x0FED7A7F  
	---ID: 01 | Hash: 0x20A7858F  
	---ID: 02 | Hash: 0xA11C2259  
	---ID: 03 | Hash: 0x08DE4700  
	---ID: 04 | Hash: 0x989F652F  
	---ID: 05 | Hash: 0x3C9E76BA  
	---ID: 06 | Hash: 0xA805FEB0  
	---ID: 07 | Hash: 0x4B94EA26  
	---ID: 08 | Hash: 0x803ACD34  
	---ID: 09 | Hash: 0x7C741226  
	---ID: 10 | Hash: 0x31DB9EBD  
	---ID: 11 | Hash: 0xDF386F18  
	---ID: 12 | Hash: 0x669CED42  
	---ID: 13 | Hash: 0x51F22743  
	---ID: 14 | Hash: 0x2052B35C  
	---ID: 15 | Hash: 0x071472DC  
	---ID: 16 | Hash: 0xF9928BCC  
	---ID: 17 | Hash: 0x7ADBDD48  
	---ID: 18 | Hash: 0xA959BA1A  
	---ID: 19 | Hash: 0xBBE89B60  
	---ID: 20 | Hash: 0x87A08871  
	---ID: 21 | Hash: 0xED1057CE  
	---ID: 22 | Hash: 0x1584AD7A  
	---ID: 23 | Hash: 0x8582CFCB  
	---ID: 24 | Hash: 0x7E5E2FB0  
	---ID: 25 | Hash: 0xAE4F72DB  
	---ID: 26 | Hash: 0x5D16D1FA  
	---ID: 27 | Hash: 0x06B2F4B8  
	---ID: 28 | Hash: 0x5D4CDC96  
	---ID: 29 | Hash: 0x8B5A48BA  
	---ID: 30 | Hash: 0x98FBD539  
	---ID: 31 | Hash: 0xD8CB0473  
	---ID: 32 | Hash: 0x5CBB4874  
	---ID: 33 | Hash: 0x2E9F93A9  
	---ID: 34 | Hash: 0xD93BEA86  
	---ID: 35 | Hash: 0x92109B7D  
	---ID: 36 | Hash: 0xB7EC9E4D  
	---ID: 37 | Hash: 0xCABDBB1D  
	---ID: 38 | Hash: 0xB3FD4A52  
	---ID: 39 | Hash: 0x370D94E5  
	---ID: 40 | Hash: 0xA0F7938F  
	---ID: 41 | Hash: 0xCBE1CE81  
	---ID: 42 | Hash: 0xC27F1271  
	---ID: 43 | Hash: 0x9E3258EB  
	---ID: 44 | Hash: 0x551CDA5B  
	---ID: 45 | Hash: 0xCB6D663C  
	---ID: 46 | Hash: 0x7DACE87F  
	---ID: 47 | Hash: 0xF9DE416F  
	---ID: 48 | Hash: 0x882E6E9E  
	---ID: 49 | Hash: 0x16B447E7  
	---ID: 50 | Hash: 0xBD867739  
	---ID: 51 | Hash: 0xA3A58604  
	---ID: 52 | Hash: 0x7E046BBC  
	---ID: 53 | Hash: 0xD95FDB98  
	---ID: 54 | Hash: 0x5842C0ED  
	---ID: 55 | Hash: 0x285FECC6  
	---ID: 56 | Hash: 0x9351AC43  
	---ID: 57 | Hash: 0x50032E75  
	---ID: 58 | Hash: 0xAE6D0D59  
	---ID: 59 | Hash: 0xD6351785  
	---ID: 60 | Hash: 0xD25D71BC  
	---ID: 61 | Hash: 0x1F7F6423  
	---ID: 62 | Hash: 0xE24C3AA6  
	---ID: 63 | Hash: 0xBFFDD2B7  
	SET_AUDIO_FLAG = function(flagName, toggle) invoker.call(0xB9EFD5C25018725A, flagName, toggle) end,
	---p1 is always 0 in the scripts  
	PREPARE_SYNCHRONIZED_AUDIO_EVENT = function(audioEvent, p1) return invoker.call(0xC7ABCACA4985A766, audioEvent, p1).bool end,
	---  
	PREPARE_SYNCHRONIZED_AUDIO_EVENT_FOR_SCENE = function(sceneID, audioEvent) return invoker.call(0x029FE7CD1B7E2E75, sceneID, audioEvent).bool end,
	---  
	PLAY_SYNCHRONIZED_AUDIO_EVENT = function(sceneID) return invoker.call(0x8B2FD4560E55DD2D, sceneID).bool end,
	---  
	STOP_SYNCHRONIZED_AUDIO_EVENT = function(sceneID) return invoker.call(0x92D6A88E64A94430, sceneID).bool end,
	---  
	INIT_SYNCH_SCENE_AUDIO_WITH_POSITION = function(audioEvent, x, y, z) invoker.call(0xC8EDE9BDBCCBA6D4, audioEvent, x, y, z) end,
	---  
	INIT_SYNCH_SCENE_AUDIO_WITH_ENTITY = function(audioEvent, entity) invoker.call(0x950A154B8DAB6185, audioEvent, entity) end,
	---Needs to be called every frame.  
	---Audio mode to apply this frame: https://alloc8or.re/gta5/doc/enums/audSpecialEffectMode.txt  
	SET_AUDIO_SPECIAL_EFFECT_MODE = function(mode) invoker.call(0x12561FCBB62D5B9C, mode) end,
	---Found in the b617d scripts, duplicates removed:    
	---  
	---AUDIO::SET_PORTAL_SETTINGS_OVERRIDE("V_CARSHOWROOM_PS_WINDOW_UNBROKEN", "V_CARSHOWROOM_PS_WINDOW_BROKEN");  
	---  
	--- AUDIO::SET_PORTAL_SETTINGS_OVERRIDE("V_CIA_PS_WINDOW_UNBROKEN", "V_CIA_PS_WINDOW_BROKEN");  
	---  
	--- AUDIO::SET_PORTAL_SETTINGS_OVERRIDE("V_DLC_HEIST_APARTMENT_DOOR_CLOSED", "V_DLC_HEIST_APARTMENT_DOOR_OPEN");  
	---  
	--- AUDIO::SET_PORTAL_SETTINGS_OVERRIDE("V_FINALEBANK_PS_VAULT_INTACT", "V_FINALEBANK_PS_VAULT_BLOWN");  
	---  
	--- AUDIO::SET_PORTAL_SETTINGS_OVERRIDE("V_MICHAEL_PS_BATHROOM_WITH_WINDOW", "V_MICHAEL_PS_BATHROOM_WITHOUT_WINDOW");  
	SET_PORTAL_SETTINGS_OVERRIDE = function(p0, p1) invoker.call(0x044DBAD7A7FA2BE5, p0, p1) end,
	---  
	SET_INDIVIDUAL_PORTAL_SETTINGS_OVERRIDE = function(interiorNameHash, roomIndex, doorIndex, newPortalSettingsName) invoker.call(0xC9D623C5A3D8FD5D, interiorNameHash, roomIndex, doorIndex, newPortalSettingsName) end,
	--- Found in the b617d scripts, duplicates removed:   
	---  
	--- AUDIO::REMOVE_PORTAL_SETTINGS_OVERRIDE("V_CARSHOWROOM_PS_WINDOW_UNBROKEN");  
	--- AUDIO::REMOVE_PORTAL_SETTINGS_OVERRIDE("V_CIA_PS_WINDOW_UNBROKEN");  
	--- AUDIO::REMOVE_PORTAL_SETTINGS_OVERRIDE("V_DLC_HEIST_APARTMENT_DOOR_CLOSED");  
	--- AUDIO::REMOVE_PORTAL_SETTINGS_OVERRIDE("V_FINALEBANK_PS_VAULT_INTACT");  
	--- AUDIO::REMOVE_PORTAL_SETTINGS_OVERRIDE("V_MICHAEL_PS_BATHROOM_WITH_WINDOW");  
	REMOVE_PORTAL_SETTINGS_OVERRIDE = function(p0) invoker.call(0xB4BBFD9CD8B3922B, p0) end,
	---  
	REMOVE_INDIVIDUAL_PORTAL_SETTINGS_OVERRIDE = function(interiorNameHash, roomIndex, doorIndex) invoker.call(0x8EF105736194F80C, interiorNameHash, roomIndex, doorIndex) end,
	---  
	STOP_SMOKE_GRENADE_EXPLOSION_SOUNDS = function() invoker.call(0xE4E6DD5566D28C82) end,
	---  
	GET_MUSIC_VOL_SLIDER = function() return invoker.call(0x3A48AB4445D499BE).int end,
	---  
	REQUEST_TENNIS_BANKS = function(ped) invoker.call(0x4ADA3F19BE4A6047, ped) end,
	---  
	UNREQUEST_TENNIS_BANKS = function() invoker.call(0x0150B6FF25A9E2E5) end,
	---  
	SET_SKIP_MINIGUN_SPIN_UP_AUDIO = function(p0) invoker.call(0xBEF34B1D9624D5DD, p0) end,
	---  
	STOP_CUTSCENE_AUDIO = function() invoker.call(0x806058BBDC136E06) end,
	---  
	HAS_LOADED_MP_DATA_SET = function() return invoker.call(0x544810ED9DB6BBE6).bool end,
	---  
	HAS_LOADED_SP_DATA_SET = function() return invoker.call(0x5B50ABB1FE3746F4).bool end,
	---  
	GET_VEHICLE_HORN_SOUND_INDEX = function(vehicle) return invoker.call(0xD53F3A29BCE2580E, vehicle).int end,
	---  
	SET_VEHICLE_HORN_SOUND_INDEX = function(vehicle, value) invoker.call(0x0350E7E17BA767D0, vehicle, value) end,
}
BRAIN={
	---BRAIN::ADD_SCRIPT_TO_RANDOM_PED("pb_prostitute", ${s_f_y_hooker_01}, 100, 0);  
	---  
	---- Nacorpio  
	---  
	--------  
	---  
	---Hardcoded to not work in Multiplayer.  
	ADD_SCRIPT_TO_RANDOM_PED = function(name, model, p2, p3) invoker.call(0x4EE5367468A65CCC, name, model, p2, p3) end,
	---Registers a script for any object with a specific model hash.  
	---  
	---BRAIN::REGISTER_OBJECT_SCRIPT_BRAIN("ob_telescope", ${prop_telescope_01}, 100, 4.0, -1, 9);  
	---  
	---- Nacorpio  
	REGISTER_OBJECT_SCRIPT_BRAIN = function(scriptName, modelHash, p2, activationRange, p4, p5) invoker.call(0x0BE84C318BA6EC22, scriptName, modelHash, p2, activationRange, p4, p5) end,
	---  
	IS_OBJECT_WITHIN_BRAIN_ACTIVATION_RANGE = function(object) return invoker.call(0xCCBA154209823057, object).bool end,
	---  
	REGISTER_WORLD_POINT_SCRIPT_BRAIN = function(scriptName, activationRange, p2) invoker.call(0x3CDC7136613284BD, scriptName, activationRange, p2) end,
	---Gets whether the world point the calling script is registered to is within desired range of the player.  
	IS_WORLD_POINT_WITHIN_BRAIN_ACTIVATION_RANGE = function() return invoker.call(0xC5042CC6F5E3D450).bool end,
	---  
	ENABLE_SCRIPT_BRAIN_SET = function(brainSet) invoker.call(0x67AA4D73F0CFA86B, brainSet) end,
	---  
	DISABLE_SCRIPT_BRAIN_SET = function(brainSet) invoker.call(0x14D8518E9760F08F, brainSet) end,
	---  
	REACTIVATE_ALL_WORLD_BRAINS_THAT_ARE_WAITING_TILL_OUT_OF_RANGE = function() invoker.call(0x0B40ED49D7D6FF84) end,
	---  
	REACTIVATE_ALL_OBJECT_BRAINS_THAT_ARE_WAITING_TILL_OUT_OF_RANGE = function() invoker.call(0x4D953DF78EBF8158) end,
	---Possible values:  
	---  
	---act_cinema  
	---am_mp_carwash_launch  
	---am_mp_carwash_control  
	---am_mp_property_ext  
	---chop  
	---fairgroundHub  
	---launcher_BasejumpHeli  
	---launcher_BasejumpPack  
	---launcher_CarWash  
	---launcher_golf  
	---launcher_Hunting_Ambient  
	---launcher_MrsPhilips  
	---launcher_OffroadRacing  
	---launcher_pilotschool  
	---launcher_Racing  
	---launcher_rampage  
	---launcher_rampage  
	---launcher_range  
	---launcher_stunts  
	---launcher_stunts  
	---launcher_tennis  
	---launcher_Tonya  
	---launcher_Triathlon  
	---launcher_Yoga  
	---ob_mp_bed_low  
	---ob_mp_bed_med  
	REACTIVATE_NAMED_WORLD_BRAINS_WAITING_TILL_OUT_OF_RANGE = function(scriptName) invoker.call(0x6D6840CEE8845831, scriptName) end,
	---Looks like a cousin of above function _6D6840CEE8845831 as it was found among them. Must be similar  
	---  
	---Here are possible values of argument -   
	---  
	---"ob_tv"  
	---"launcher_Darts"  
	REACTIVATE_NAMED_OBJECT_BRAINS_WAITING_TILL_OUT_OF_RANGE = function(scriptName) invoker.call(0x6E91B04E08773030, scriptName) end,
}
CAM={
	---ease - smooth transition between the camera's positions  
	---easeTime - Time in milliseconds for the transition to happen  
	---  
	---If you have created a script (rendering) camera, and want to go back to the   
	---character (gameplay) camera, call this native with render set to 0.  
	---Setting ease to 1 will smooth the transition.  
	RENDER_SCRIPT_CAMS = function(render, ease, easeTime, p3, p4, p5) invoker.call(0x07E5B515DB0636FC, render, ease, easeTime, p3, p4, p5) end,
	---This native makes the gameplay camera zoom into first person/third person with a special effect.  
	STOP_RENDERING_SCRIPT_CAMS_USING_CATCH_UP = function(render, p1, p2, p3) invoker.call(0xC819F3CBB62BF692, render, p1, p2, p3) end,
	---"DEFAULT_SCRIPTED_CAMERA"  
	---"DEFAULT_ANIMATED_CAMERA"  
	---"DEFAULT_SPLINE_CAMERA"  
	---"DEFAULT_SCRIPTED_FLY_CAMERA"  
	---"TIMED_SPLINE_CAMERA"  
	CREATE_CAM = function(camName, p1) return invoker.call(0xC3981DCE61D9E13F, camName, p1).int end,
	---camName is always set to "DEFAULT_SCRIPTED_CAMERA" in Rockstar's scripts.  
	---------------  
	---Camera names found in the b617d scripts:  
	---"DEFAULT_ANIMATED_CAMERA"  
	---"DEFAULT_SCRIPTED_CAMERA"  
	---"DEFAULT_SCRIPTED_FLY_CAMERA"  
	---"DEFAULT_SPLINE_CAMERA"  
	---------------  
	---Side Note: It seems p8 is basically to represent what would be the bool p1 within CREATE_CAM native. As well as the p9 since it's always 2 in scripts seems to represent what would be the last param within SET_CAM_ROT native which normally would be 2.  
	CREATE_CAM_WITH_PARAMS = function(camName, posX, posY, posZ, rotX, rotY, rotZ, fov, p8, p9) return invoker.call(0xB51194800B257161, camName, posX, posY, posZ, rotX, rotY, rotZ, fov, p8, p9).int end,
	---  
	CREATE_CAMERA = function(camHash, p1) return invoker.call(0x5E3CF89C6BCCA67D, camHash, p1).int end,
	---p9 uses 2 by default  
	CREATE_CAMERA_WITH_PARAMS = function(camHash, posX, posY, posZ, rotX, rotY, rotZ, fov, p8, p9) return invoker.call(0x6ABFA3E16460F22D, camHash, posX, posY, posZ, rotX, rotY, rotZ, fov, p8, p9).int end,
	---BOOL param indicates whether the cam should be destroyed if it belongs to the calling script.  
	DESTROY_CAM = function(cam, bScriptHostCam) invoker.call(0x865908C81A2C22E9, cam, bScriptHostCam) end,
	---BOOL param indicates whether the cam should be destroyed if it belongs to the calling script.  
	DESTROY_ALL_CAMS = function(bScriptHostCam) invoker.call(0x8E5FB15663F79120, bScriptHostCam) end,
	---Returns whether or not the passed camera handle exists.  
	DOES_CAM_EXIST = function(cam) return invoker.call(0xA7A932170592B50E, cam).bool end,
	---Set camera as active/inactive.  
	SET_CAM_ACTIVE = function(cam, active) invoker.call(0x026FB97D0A425F84, cam, active) end,
	---Returns whether or not the passed camera handle is active.  
	IS_CAM_ACTIVE = function(cam) return invoker.call(0xDFB2B516207D3534, cam).bool end,
	---  
	IS_CAM_RENDERING = function(cam) return invoker.call(0x02EC0AF5C5A49B7A, cam).bool end,
	---  
	GET_RENDERING_CAM = function() return invoker.call(0x5234F9F10919EABA).int end,
	---  
	GET_CAM_COORD = function(cam) return invoker.call(0xBAC038F7459AE5AE, cam).scr_vec3 end,
	---The last parameter, as in other "ROT" methods, is usually 2.  
	GET_CAM_ROT = function(cam, rotationOrder) return invoker.call(0x7D304C1C955E3E12, cam, rotationOrder).scr_vec3 end,
	---  
	GET_CAM_FOV = function(cam) return invoker.call(0xC3330A45CCCDB26A, cam).float end,
	---  
	GET_CAM_NEAR_CLIP = function(cam) return invoker.call(0xC520A34DAFBF24B1, cam).float end,
	---  
	GET_CAM_FAR_CLIP = function(cam) return invoker.call(0xB60A9CFEB21CA6AA, cam).float end,
	---  
	GET_CAM_NEAR_DOF = function(cam) return invoker.call(0xC2612D223D915A1C, cam).float end,
	---  
	GET_CAM_FAR_DOF = function(cam) return invoker.call(0x255F8DAFD540D397, cam).float end,
	---  
	GET_CAM_DOF_STRENGTH = function(cam) return invoker.call(0x06D153C0B99B6128, cam).float end,
	---  
	SET_CAM_PARAMS = function(cam, posX, posY, posZ, rotX, rotY, rotZ, fieldOfView, p8, p9, p10, p11) invoker.call(0xBFD8727AEA3CCEBA, cam, posX, posY, posZ, rotX, rotY, rotZ, fieldOfView, p8, p9, p10, p11) end,
	---Sets the position of the cam.  
	SET_CAM_COORD = function(cam, posX, posY, posZ) invoker.call(0x4D41783FB745E42E, cam, posX, posY, posZ) end,
	---Sets the rotation of the cam.  
	---Last parameter unknown.  
	---  
	---Last parameter seems to always be set to 2.  
	SET_CAM_ROT = function(cam, rotX, rotY, rotZ, rotationOrder) invoker.call(0x85973643155D0B07, cam, rotX, rotY, rotZ, rotationOrder) end,
	---Sets the field of view of the cam.  
	------------------------------------------------  
	---Min: 1.0f  
	---Max: 130.0f  
	SET_CAM_FOV = function(cam, fieldOfView) invoker.call(0xB13C14F66A00D047, cam, fieldOfView) end,
	---  
	SET_CAM_NEAR_CLIP = function(cam, nearClip) invoker.call(0xC7848EFCCC545182, cam, nearClip) end,
	---  
	SET_CAM_FAR_CLIP = function(cam, farClip) invoker.call(0xAE306F2A904BF86E, cam, farClip) end,
	---  
	FORCE_CAM_FAR_CLIP = function(cam, p1) invoker.call(0xAABD62873FFB1A33, cam, p1) end,
	---  
	SET_CAM_MOTION_BLUR_STRENGTH = function(cam, strength) invoker.call(0x6F0F77FBA9A8F2E6, cam, strength) end,
	---  
	SET_CAM_NEAR_DOF = function(cam, nearDOF) invoker.call(0x3FA4BF0A7AB7DE2C, cam, nearDOF) end,
	---  
	SET_CAM_FAR_DOF = function(cam, farDOF) invoker.call(0xEDD91296CD01AEE0, cam, farDOF) end,
	---  
	SET_CAM_DOF_STRENGTH = function(cam, dofStrength) invoker.call(0x5EE29B4D7D5DF897, cam, dofStrength) end,
	---  
	SET_CAM_DOF_PLANES = function(cam, p1, p2, p3, p4) invoker.call(0x3CF48F6F96E749DC, cam, p1, p2, p3, p4) end,
	---  
	SET_CAM_USE_SHALLOW_DOF_MODE = function(cam, toggle) invoker.call(0x16A96863A17552BB, cam, toggle) end,
	---  
	SET_USE_HI_DOF = function() invoker.call(0xA13B0222F3D94A94) end,
	---Only used in R* Script fm_mission_controller_2020  
	SET_USE_HI_DOF_ON_SYNCED_SCENE_THIS_UPDATE = function() invoker.call(0x731A880555DA3647) end,
	---  
	SET_CAM_DOF_OVERRIDDEN_FOCUS_DISTANCE = function(camera, p1) invoker.call(0xF55E4046F6F831DC, camera, p1) end,
	---  
	SET_CAM_DOF_OVERRIDDEN_FOCUS_DISTANCE_BLEND_LEVEL = function(p0, p1) invoker.call(0xE111A7C0D200CBC5, p0, p1) end,
	---This native has its name defined inside its codE  
	---  
	SET_CAM_DOF_FNUMBER_OF_LENS = function(camera, p1) invoker.call(0x7DD234D6F3914C5B, camera, p1) end,
	---Native name labeled within its code  
	SET_CAM_DOF_FOCAL_LENGTH_MULTIPLIER = function(camera, multiplier) invoker.call(0x47B595D60664CFFA, camera, multiplier) end,
	---This native has a name defined inside its code  
	SET_CAM_DOF_FOCUS_DISTANCE_BIAS = function(camera, p1) invoker.call(0xC669EEA5D031B7DE, camera, p1) end,
	---This native has a name defined inside its code  
	SET_CAM_DOF_MAX_NEAR_IN_FOCUS_DISTANCE = function(camera, p1) invoker.call(0xC3654A441402562D, camera, p1) end,
	---This native has a name defined inside its code  
	SET_CAM_DOF_MAX_NEAR_IN_FOCUS_DISTANCE_BLEND_LEVEL = function(camera, p1) invoker.call(0x2C654B4943BDDF7C, camera, p1) end,
	---This native has a name defined inside its code  
	SET_CAM_DOF_SHOULD_KEEP_LOOK_AT_TARGET_IN_FOCUS = function(camera, state) invoker.call(0x7CF3AF51DCFE4108, camera, state) end,
	---Last param determines if its relative to the Entity  
	ATTACH_CAM_TO_ENTITY = function(cam, entity, xOffset, yOffset, zOffset, isRelative) invoker.call(0xFEDB7D269E8C60E3, cam, entity, xOffset, yOffset, zOffset, isRelative) end,
	---  
	ATTACH_CAM_TO_PED_BONE = function(cam, ped, boneIndex, x, y, z, heading) invoker.call(0x61A3DBA14AB7F411, cam, ped, boneIndex, x, y, z, heading) end,
	---  
	HARD_ATTACH_CAM_TO_PED_BONE = function(cam, ped, boneIndex, p3, p4, p5, p6, p7, p8, p9) invoker.call(0x149916F50C34A40D, cam, ped, boneIndex, p3, p4, p5, p6, p7, p8, p9) end,
	---Example from am_mp_drone script:   
	---  
	---CAM::HARD_ATTACH_CAM_TO_ENTITY(Local_190.f_169, NETWORK::NET_TO_OBJ(Local_190.f_159), 0f, 0f, 180f, Var0, 1);  
	HARD_ATTACH_CAM_TO_ENTITY = function(cam, entity, xRot, yRot, zRot, xOffset, yOffset, zOffset, isRelative) invoker.call(0x202A5ED9CE01D6E7, cam, entity, xRot, yRot, zRot, xOffset, yOffset, zOffset, isRelative) end,
	---This native works with vehicles only. Bone indexes are usually given by this native GET_ENTITY_BONE_INDEX_BY_NAME.  
	ATTACH_CAM_TO_VEHICLE_BONE = function(cam, vehicle, boneIndex, relativeRotation, rotX, rotY, rotZ, offsetX, offsetY, offsetZ, fixedDirection) invoker.call(0x8DB3F12A02CAEF72, cam, vehicle, boneIndex, relativeRotation, rotX, rotY, rotZ, offsetX, offsetY, offsetZ, fixedDirection) end,
	---  
	DETACH_CAM = function(cam) invoker.call(0xA2FABBE87F4BAD82, cam) end,
	---The native seems to only be called once.  
	---  
	---The native is used as so,  
	---CAM::SET_CAM_INHERIT_ROLL_VEHICLE(l_544, getElem(2, &l_525, 4));  
	---In the exile1 script.  
	SET_CAM_INHERIT_ROLL_VEHICLE = function(cam, p1) invoker.call(0x45F1DE9C34B93AE6, cam, p1) end,
	---  
	POINT_CAM_AT_COORD = function(cam, x, y, z) invoker.call(0xF75497BB865F0803, cam, x, y, z) end,
	---p5 always seems to be 1 i.e TRUE  
	POINT_CAM_AT_ENTITY = function(cam, entity, p2, p3, p4, p5) invoker.call(0x5640BFF86B16E8DC, cam, entity, p2, p3, p4, p5) end,
	---Parameters p0-p5 seems correct. The bool p6 is unknown, but through every X360 script it's always 1. Please correct p0-p5 if any prove to be wrong.   
	POINT_CAM_AT_PED_BONE = function(cam, ped, boneIndex, x, y, z, p6) invoker.call(0x68B2B5F33BA63C41, cam, ped, boneIndex, x, y, z, p6) end,
	---  
	STOP_CAM_POINTING = function(cam) invoker.call(0xF33AB75780BA57DE, cam) end,
	---Allows you to aim and shoot at the direction the camera is facing.  
	SET_CAM_AFFECTS_AIMING = function(cam, toggle) invoker.call(0x8C1DC7770C51DC8D, cam, toggle) end,
	---Rotates the radar to match the camera's Z rotation  
	SET_CAM_CONTROLS_MINI_MAP_HEADING = function(cam, toggle) invoker.call(0x661B5C8654ADD825, cam, toggle) end,
	---When set to true shadows appear more smooth but less detailed.  
	---Set to false by default.  
	SET_CAM_IS_INSIDE_VEHICLE = function(cam, toggle) invoker.call(0xA2767257A320FC82, cam, toggle) end,
	---  
	ALLOW_MOTION_BLUR_DECAY = function(p0, p1) invoker.call(0x271017B9BA825366, p0, p1) end,
	---NOTE: Debugging functions are not present in the retail version of the game.  
	SET_CAM_DEBUG_NAME = function(camera, name) invoker.call(0x1B93E0107865DD40, camera, name) end,
	---  
	GET_DEBUG_CAM = function() return invoker.call(0x77C3CEC46BE286F6).int end,
	---I filled p1-p6 (the floats) as they are as other natives with 6 floats in a row are similar and I see no other method. So if a test from anyone proves them wrong please correct.  
	---  
	---p7 (length) determines the length of the spline, affects camera path and duration of transition between previous node and this one  
	---  
	---p8 big values ~100 will slow down the camera movement before reaching this node  
	---  
	---p9 != 0 seems to override the rotation/pitch (bool?)  
	ADD_CAM_SPLINE_NODE = function(camera, x, y, z, xRot, yRot, zRot, length, smoothingStyle, rotationOrder) invoker.call(0x8609C75EC438FB3B, camera, x, y, z, xRot, yRot, zRot, length, smoothingStyle, rotationOrder) end,
	---p0 is the spline camera to which the node is being added.  
	---p1 is the camera used to create the node.  
	---p3 is always 3 in scripts. It might be smoothing style or rotation order.  
	ADD_CAM_SPLINE_NODE_USING_CAMERA_FRAME = function(cam, cam2, length, p3) invoker.call(0x0A9F2A468B328E74, cam, cam2, length, p3) end,
	---p0 is the spline camera to which the node is being added.  
	---p1 is the camera used to create the node.  
	---p3 is always 3 in scripts. It might be smoothing style or rotation order.  
	ADD_CAM_SPLINE_NODE_USING_CAMERA = function(cam, cam2, length, p3) invoker.call(0x0FB82563989CF4FB, cam, cam2, length, p3) end,
	---p2 is always 2 in scripts. It might be smoothing style or rotation order.  
	ADD_CAM_SPLINE_NODE_USING_GAMEPLAY_FRAME = function(cam, length, p2) invoker.call(0x609278246A29CA34, cam, length, p2) end,
	---  
	SET_CAM_SPLINE_PHASE = function(cam, p1) invoker.call(0x242B5874F0A4E052, cam, p1) end,
	---Can use this with SET_CAM_SPLINE_PHASE to set the float it this native returns.  
	---  
	---(returns 1.0f when no nodes has been added, reached end of non existing spline)  
	GET_CAM_SPLINE_PHASE = function(cam) return invoker.call(0xB5349E36C546509A, cam).float end,
	---I'm pretty sure the parameter is the camera as usual, but I am not certain so I'm going to leave it as is.  
	GET_CAM_SPLINE_NODE_PHASE = function(cam) return invoker.call(0xD9D0E694C8282C96, cam).float end,
	---I named p1 as timeDuration as it is obvious. I'm assuming tho it is ran in ms(Milliseconds) as usual.  
	SET_CAM_SPLINE_DURATION = function(cam, timeDuration) invoker.call(0x1381539FEE034CDA, cam, timeDuration) end,
	---  
	SET_CAM_SPLINE_SMOOTHING_STYLE = function(cam, smoothingStyle) invoker.call(0xD1B0F412F109EA5D, cam, smoothingStyle) end,
	---  
	GET_CAM_SPLINE_NODE_INDEX = function(cam) return invoker.call(0xB22B17DF858716A6, cam).int end,
	---  
	SET_CAM_SPLINE_NODE_EASE = function(cam, easingFunction, p2, p3) invoker.call(0x83B8201ED82A9A2D, cam, easingFunction, p2, p3) end,
	---  
	SET_CAM_SPLINE_NODE_VELOCITY_SCALE = function(cam, p1, scale) invoker.call(0xA6385DEB180F319F, cam, p1, scale) end,
	---  
	OVERRIDE_CAM_SPLINE_VELOCITY = function(cam, p1, p2, p3) invoker.call(0x40B62FA033EB0346, cam, p1, p2, p3) end,
	---Max value for p1 is 15.  
	OVERRIDE_CAM_SPLINE_MOTION_BLUR = function(cam, p1, p2, p3) invoker.call(0x7DCF7C708D292D55, cam, p1, p2, p3) end,
	---  
	SET_CAM_SPLINE_NODE_EXTRA_FLAGS = function(cam, p1, flags) invoker.call(0x7BF1A54AE67AC070, cam, p1, flags) end,
	---  
	IS_CAM_SPLINE_PAUSED = function(cam) return invoker.call(0x0290F35C0AD97864, cam).bool end,
	---  
	_INTERPOLATE_CAM_WITH_PARAMS = function(camera, camPosX, camPosY, camPosZ, camRotX, camRotY, camRotZ, fov, duration, posCurveType, rotCurveType, rotOrder, fovCurveType) invoker.call(0xDDA77EE33C005AAF, camera, camPosX, camPosY, camPosZ, camRotX, camRotY, camRotZ, fov, duration, posCurveType, rotCurveType, rotOrder, fovCurveType) end,
	---  
	_ACTIVATE_CAM_WITH_INTERP_AND_FOV_CURVE = function(camTo, camFrom, duration, easeLocation, easeRotation, easeFov) invoker.call(0x34CFC4C2A38E83E3, camTo, camFrom, duration, easeLocation, easeRotation, easeFov) end,
	---Previous declaration void SET_CAM_ACTIVE_WITH_INTERP(Cam camTo, Cam camFrom, int duration, BOOL easeLocation, BOOL easeRotation) is completely wrong. The last two params are integers not BOOLs...  
	---  
	SET_CAM_ACTIVE_WITH_INTERP = function(camTo, camFrom, duration, easeLocation, easeRotation) invoker.call(0x9FBDA379383A52A4, camTo, camFrom, duration, easeLocation, easeRotation) end,
	---  
	IS_CAM_INTERPOLATING = function(cam) return invoker.call(0x036F97C908C2B52C, cam).bool end,
	---Possible shake types (updated b617d):  
	---  
	---DEATH_FAIL_IN_EFFECT_SHAKE  
	---DRUNK_SHAKE  
	---FAMILY5_DRUG_TRIP_SHAKE  
	---HAND_SHAKE  
	---JOLT_SHAKE  
	---LARGE_EXPLOSION_SHAKE  
	---MEDIUM_EXPLOSION_SHAKE  
	---SMALL_EXPLOSION_SHAKE  
	---ROAD_VIBRATION_SHAKE  
	---SKY_DIVING_SHAKE  
	---VIBRATE_SHAKE  
	---  
	---Full list of cam shake types by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/camShakeTypesCompact.json  
	SHAKE_CAM = function(cam, type, amplitude) invoker.call(0x6A25241C340D3822, cam, type, amplitude) end,
	---Example from michael2 script.  
	---  
	---CAM::ANIMATED_SHAKE_CAM(l_5069, "shake_cam_all@", "light", "", 1f);  
	ANIMATED_SHAKE_CAM = function(cam, p1, p2, p3, amplitude) invoker.call(0xA2746EEAE3E577CD, cam, p1, p2, p3, amplitude) end,
	---  
	IS_CAM_SHAKING = function(cam) return invoker.call(0x6B24BFE83A2BE47B, cam).bool end,
	---  
	SET_CAM_SHAKE_AMPLITUDE = function(cam, amplitude) invoker.call(0xD93DB43B82BC0D00, cam, amplitude) end,
	---  
	STOP_CAM_SHAKING = function(cam, p1) invoker.call(0xBDECF64367884AC3, cam, p1) end,
	---CAM::SHAKE_SCRIPT_GLOBAL("HAND_SHAKE", 0.2);  
	---  
	---Full list of cam shake types by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/camShakeTypesCompact.json  
	SHAKE_SCRIPT_GLOBAL = function(p0, p1) invoker.call(0xF4C8CF9E353AFECA, p0, p1) end,
	---CAM::ANIMATED_SHAKE_SCRIPT_GLOBAL("SHAKE_CAM_medium", "medium", "", 0.5f);  
	---  
	---Full list of cam shake types by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/camShakeTypesCompact.json  
	ANIMATED_SHAKE_SCRIPT_GLOBAL = function(p0, p1, p2, p3) invoker.call(0xC2EAE3FB8CDBED31, p0, p1, p2, p3) end,
	---In drunk_controller.c4, sub_309  
	---if (CAM::IS_SCRIPT_GLOBAL_SHAKING()) {  
	---    CAM::STOP_SCRIPT_GLOBAL_SHAKING(0);  
	---}  
	IS_SCRIPT_GLOBAL_SHAKING = function() return invoker.call(0xC912AF078AF19212).bool end,
	---In drunk_controller.c4, sub_309  
	---if (CAM::IS_SCRIPT_GLOBAL_SHAKING()) {  
	---    CAM::STOP_SCRIPT_GLOBAL_SHAKING(0);  
	---}  
	STOP_SCRIPT_GLOBAL_SHAKING = function(p0) invoker.call(0x1C9D7949FA533490, p0) end,
	---p1: 0..16  
	TRIGGER_VEHICLE_PART_BROKEN_CAMERA_SHAKE = function(vehicle, p1, p2) invoker.call(0x5D96CFB59DA076A0, vehicle, p1, p2) end,
	---Atleast one time in a script for the zRot Rockstar uses GET_ENTITY_HEADING to help fill the parameter.  
	---  
	---p9 is unknown at this time.  
	---p10 throughout all the X360 Scripts is always 2.  
	---  
	---Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json  
	PLAY_CAM_ANIM = function(cam, animName, animDictionary, x, y, z, xRot, yRot, zRot, p9, p10) return invoker.call(0x9A2D0FB2E7852392, cam, animName, animDictionary, x, y, z, xRot, yRot, zRot, p9, p10).bool end,
	---  
	IS_CAM_PLAYING_ANIM = function(cam, animName, animDictionary) return invoker.call(0xC90621D8A0CEECF2, cam, animName, animDictionary).bool end,
	---  
	SET_CAM_ANIM_CURRENT_PHASE = function(cam, phase) invoker.call(0x4145A4C44FF3B5A6, cam, phase) end,
	---  
	GET_CAM_ANIM_CURRENT_PHASE = function(cam) return invoker.call(0xA10B2DB49E92A6B0, cam).float end,
	---Examples:  
	---  
	---CAM::PLAY_SYNCHRONIZED_CAM_ANIM(l_2734, NETWORK::NETWORK_GET_LOCAL_SCENE_FROM_NETWORK_ID(l_2739), "PLAYER_EXIT_L_CAM", "mp_doorbell");  
	---  
	---CAM::PLAY_SYNCHRONIZED_CAM_ANIM(l_F0D[7/*1*/], l_F4D[15/*1*/], "ah3b_attackheli_cam2", "missheistfbi3b_helicrash");  
	PLAY_SYNCHRONIZED_CAM_ANIM = function(p0, p1, animName, animDictionary) return invoker.call(0xE32EFE9AB4A9AA0C, p0, p1, animName, animDictionary).bool end,
	---  
	SET_FLY_CAM_HORIZONTAL_RESPONSE = function(cam, p1, p2, p3) invoker.call(0x503F5920162365B2, cam, p1, p2, p3) end,
	---  
	SET_FLY_CAM_VERTICAL_RESPONSE = function(cam, p1, p2, p3) invoker.call(0xE827B9382CFB41BA, cam, p1, p2, p3) end,
	---  
	SET_FLY_CAM_MAX_HEIGHT = function(cam, height) invoker.call(0xF9D02130ECDD1D77, cam, height) end,
	---  
	SET_FLY_CAM_COORD_AND_CONSTRAIN = function(cam, x, y, z) invoker.call(0xC91C6C55199308CA, cam, x, y, z) end,
	---  
	SET_FLY_CAM_VERTICAL_CONTROLS_THIS_UPDATE = function(cam) invoker.call(0xC8B5C4A79CC18B94, cam) end,
	---  
	WAS_FLY_CAM_CONSTRAINED_ON_PREVIOUS_UDPATE = function(cam) return invoker.call(0x5C48A1D6E3B33179, cam).bool end,
	---  
	IS_SCREEN_FADED_OUT = function() return invoker.call(0xB16FCE9DDC7BA182).bool end,
	---  
	IS_SCREEN_FADED_IN = function() return invoker.call(0x5A859503B0C08678).bool end,
	---  
	IS_SCREEN_FADING_OUT = function() return invoker.call(0x797AC7CB535BA28F).bool end,
	---  
	IS_SCREEN_FADING_IN = function() return invoker.call(0x5C544BC6C57AC575).bool end,
	---Fades the screen in.  
	---  
	---duration: The time the fade should take, in milliseconds.  
	DO_SCREEN_FADE_IN = function(duration) invoker.call(0xD4E8E24955024033, duration) end,
	---Fades the screen out.  
	---  
	---duration: The time the fade should take, in milliseconds.  
	DO_SCREEN_FADE_OUT = function(duration) invoker.call(0x891B5B39AC6302AF, duration) end,
	---  
	SET_WIDESCREEN_BORDERS = function(p0, p1) invoker.call(0xDCD4EA924F42D01A, p0, p1) end,
	---  
	ARE_WIDESCREEN_BORDERS_ACTIVE = function() return invoker.call(0x4879E4FE39074CDF).bool end,
	---  
	GET_GAMEPLAY_CAM_COORD = function() return invoker.call(0x14D6F5678D8F1B37).scr_vec3 end,
	---p0 dosen't seem to change much, I tried it with 0, 1, 2:  
	---0-Pitch(X): -70.000092  
	---0-Roll(Y): -0.000001  
	---0-Yaw(Z): -43.886459  
	---1-Pitch(X): -70.000092  
	---1-Roll(Y): -0.000001  
	---1-Yaw(Z): -43.886463  
	---2-Pitch(X): -70.000092  
	---2-Roll(Y): -0.000002  
	---2-Yaw(Z): -43.886467  
	GET_GAMEPLAY_CAM_ROT = function(rotationOrder) return invoker.call(0x837765A25378F0BB, rotationOrder).scr_vec3 end,
	---  
	GET_GAMEPLAY_CAM_FOV = function() return invoker.call(0x65019750A0324133).float end,
	---some camera effect that is used in the drunk-cheat, and turned off (by setting it to 0.0) along with the shaking effects once the drunk cheat is disabled.  
	SET_GAMEPLAY_CAM_MOTION_BLUR_SCALING_THIS_UPDATE = function(p0) invoker.call(0x487A82C650EB7799, p0) end,
	---some camera effect that is (also) used in the drunk-cheat, and turned off (by setting it to 0.0) along with the shaking effects once the drunk cheat is disabled.  
	SET_GAMEPLAY_CAM_MAX_MOTION_BLUR_STRENGTH_THIS_UPDATE = function(p0) invoker.call(0x0225778816FDC28C, p0) end,
	---  
	GET_GAMEPLAY_CAM_RELATIVE_HEADING = function() return invoker.call(0x743607648ADD4587).float end,
	---Sets the camera position relative to heading in float from -360 to +360.  
	---  
	---Heading is alwyas 0 in aiming camera.  
	SET_GAMEPLAY_CAM_RELATIVE_HEADING = function(heading) invoker.call(0xB4EC2312F4E5B1F1, heading) end,
	---  
	GET_GAMEPLAY_CAM_RELATIVE_PITCH = function() return invoker.call(0x3A6867B4845BEDA2).float end,
	---This native sets the camera's pitch (rotation on the x-axis).  
	SET_GAMEPLAY_CAM_RELATIVE_PITCH = function(angle, scalingFactor) invoker.call(0x6D0858B8EDFD2B7D, angle, scalingFactor) end,
	---  
	RESET_GAMEPLAY_CAM_FULL_ATTACH_PARENT_TRANSFORM_TIMER = function() invoker.call(0x7295C203DD659DFE) end,
	---  
	FORCE_CAMERA_RELATIVE_HEADING_AND_PITCH = function(roll, pitch, yaw) invoker.call(0x48608C3464F58AB4, roll, pitch, yaw) end,
	---  
	FORCE_BONNET_CAMERA_RELATIVE_HEADING_AND_PITCH = function(p0, p1) invoker.call(0x28B022A17B068A3A, p0, p1) end,
	---Does nothing  
	SET_FIRST_PERSON_SHOOTER_CAMERA_HEADING = function(yaw) invoker.call(0x103991D4A307D472, yaw) end,
	---  
	SET_FIRST_PERSON_SHOOTER_CAMERA_PITCH = function(pitch) invoker.call(0x759E13EBC1C15C5A, pitch) end,
	---  
	SET_SCRIPTED_CAMERA_IS_FIRST_PERSON_THIS_FRAME = function(p0) invoker.call(0x469F2ECDEC046337, p0) end,
	---Possible shake types (updated b617d):  
	---  
	---DEATH_FAIL_IN_EFFECT_SHAKE  
	---DRUNK_SHAKE  
	---FAMILY5_DRUG_TRIP_SHAKE  
	---HAND_SHAKE  
	---JOLT_SHAKE  
	---LARGE_EXPLOSION_SHAKE  
	---MEDIUM_EXPLOSION_SHAKE  
	---SMALL_EXPLOSION_SHAKE  
	---ROAD_VIBRATION_SHAKE  
	---SKY_DIVING_SHAKE  
	---VIBRATE_SHAKE  
	---  
	---Full list of cam shake types by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/camShakeTypesCompact.json  
	SHAKE_GAMEPLAY_CAM = function(shakeName, intensity) invoker.call(0xFD55E49555E017CF, shakeName, intensity) end,
	---  
	IS_GAMEPLAY_CAM_SHAKING = function() return invoker.call(0x016C090630DF1F89).bool end,
	---Sets the amplitude for the gameplay (i.e. 3rd or 1st) camera to shake. Used in script "drunk_controller.ysc.c4" to simulate making the player drunk.  
	SET_GAMEPLAY_CAM_SHAKE_AMPLITUDE = function(amplitude) invoker.call(0xA87E00932DB4D85D, amplitude) end,
	---  
	STOP_GAMEPLAY_CAM_SHAKING = function(p0) invoker.call(0x0EF93E9F3D08C178, p0) end,
	---Forces gameplay cam to specified ped as if you were the ped or spectating it  
	SET_GAMEPLAY_CAM_FOLLOW_PED_THIS_UPDATE = function(ped) invoker.call(0x8BBACBF51DA047A8, ped) end,
	---Examples when this function will return 0 are:  
	---- During busted screen.  
	---- When player is coming out from a hospital.  
	---- When player is coming out from a police station.  
	---- When player is buying gun from AmmuNation.  
	IS_GAMEPLAY_CAM_RENDERING = function() return invoker.call(0x39B5D1B10383F0C8).bool end,
	---  
	IS_INTERPOLATING_FROM_SCRIPT_CAMS = function() return invoker.call(0x3044240D2E0FA842).bool end,
	---  
	IS_INTERPOLATING_TO_SCRIPT_CAMS = function() return invoker.call(0x705A276EBFF3133D).bool end,
	---  
	SET_GAMEPLAY_CAM_ALTITUDE_FOV_SCALING_STATE = function(p0) invoker.call(0xDB90C6CCA48940F1, p0) end,
	---Shows the crosshair even if it wouldn't show normally. Only works for one frame, so make sure to call it repeatedly.  
	DISABLE_GAMEPLAY_CAM_ALTITUDE_FOV_SCALING_THIS_UPDATE = function() invoker.call(0xEA7F0AD7E9BA676F) end,
	---  
	IS_GAMEPLAY_CAM_LOOKING_BEHIND = function() return invoker.call(0x70FDA869F3317EA9).bool end,
	---  
	SET_GAMEPLAY_CAM_IGNORE_ENTITY_COLLISION_THIS_UPDATE = function(entity) invoker.call(0x2AED6301F67007D5, entity) end,
	---  
	DISABLE_CAM_COLLISION_FOR_OBJECT = function(entity) invoker.call(0x49482F9FCD825AAA, entity) end,
	---  
	BYPASS_CAMERA_COLLISION_BUOYANCY_TEST_THIS_UPDATE = function() invoker.call(0xA7092AFE81944852) end,
	---  
	SET_GAMEPLAY_CAM_ENTITY_TO_LIMIT_FOCUS_OVER_BOUNDING_SPHERE_THIS_UPDATE = function(entity) invoker.call(0xFD3151CD37EA2245, entity) end,
	---Sets some flag on cinematic camera  
	DISABLE_FIRST_PERSON_CAMERA_WATER_CLIPPING_TEST_THIS_UPDATE = function() invoker.call(0xB1381B97F70C7B30) end,
	---  
	SET_FOLLOW_CAM_IGNORE_ATTACH_PARENT_MOVEMENT_THIS_UPDATE = function() invoker.call(0xDD79DF9F4D26E1C9) end,
	---  
	IS_SPHERE_VISIBLE = function(x, y, z, radius) return invoker.call(0xE33D59DA70B58FDF, x, y, z, radius).bool end,
	---  
	IS_FOLLOW_PED_CAM_ACTIVE = function() return invoker.call(0xC6D3D26810C8E0F9).bool end,
	---From the scripts:  
	---  
	---CAM::SET_FOLLOW_PED_CAM_THIS_UPDATE("FOLLOW_PED_ATTACHED_TO_ROPE_CAMERA", 0);  
	---CAM::SET_FOLLOW_PED_CAM_THIS_UPDATE("FOLLOW_PED_ON_EXILE1_LADDER_CAMERA", 1500);  
	---CAM::SET_FOLLOW_PED_CAM_THIS_UPDATE("FOLLOW_PED_SKY_DIVING_CAMERA", 0);  
	---CAM::SET_FOLLOW_PED_CAM_THIS_UPDATE("FOLLOW_PED_SKY_DIVING_CAMERA", 3000);  
	---CAM::SET_FOLLOW_PED_CAM_THIS_UPDATE("FOLLOW_PED_SKY_DIVING_FAMILY5_CAMERA", 0);  
	---CAM::SET_FOLLOW_PED_CAM_THIS_UPDATE("FOLLOW_PED_SKY_DIVING_CAMERA", 0);  
	SET_FOLLOW_PED_CAM_THIS_UPDATE = function(camName, p1) return invoker.call(0x44A113DD6FFC48D1, camName, p1).bool end,
	---  
	USE_SCRIPT_CAM_FOR_AMBIENT_POPULATION_ORIGIN_THIS_FRAME = function(p0, p1) invoker.call(0x271401846BD26E92, p0, p1) end,
	---  
	SET_FOLLOW_PED_CAM_LADDER_ALIGN_THIS_UPDATE = function() invoker.call(0xC8391C309684595A) end,
	---minimum: Degrees between -180f and 180f.  
	---maximum: Degrees between -180f and 180f.  
	---  
	---Clamps the gameplay camera's current yaw.  
	---  
	---Eg. SET_THIRD_PERSON_CAM_RELATIVE_HEADING_LIMITS_THIS_UPDATE(0.0f, 0.0f) will set the horizontal angle directly behind the player.  
	SET_THIRD_PERSON_CAM_RELATIVE_HEADING_LIMITS_THIS_UPDATE = function(minimum, maximum) invoker.call(0x8F993D26E0CA5E8E, minimum, maximum) end,
	---minimum: Degrees between -90f and 90f.  
	---maximum: Degrees between -90f and 90f.  
	---  
	---Clamps the gameplay camera's current pitch.  
	---  
	---Eg. SET_THIRD_PERSON_CAM_RELATIVE_PITCH_LIMITS_THIS_UPDATE(0.0f, 0.0f) will set the vertical angle directly behind the player.  
	SET_THIRD_PERSON_CAM_RELATIVE_PITCH_LIMITS_THIS_UPDATE = function(minimum, maximum) invoker.call(0xA516C198B7DCA1E1, minimum, maximum) end,
	---Seems to animate the gameplay camera zoom.  
	---  
	---Eg. SET_THIRD_PERSON_CAM_ORBIT_DISTANCE_LIMITS_THIS_UPDATE(1f, 1000f);  
	---will animate the camera zooming in from 1000 meters away.  
	---  
	---Game scripts use it like this:  
	---  
	---// Setting this to 1 prevents V key from changing zoom  
	---PLAYER::SET_PLAYER_FORCED_ZOOM(PLAYER::PLAYER_ID(), 1);  
	---  
	---// These restrict how far you can move cam up/down left/right  
	---CAM::SET_THIRD_PERSON_CAM_RELATIVE_HEADING_LIMITS_THIS_UPDATE(-20f, 50f);  
	---CAM::SET_THIRD_PERSON_CAM_RELATIVE_PITCH_LIMITS_THIS_UPDATE(-60f, 0f);  
	---  
	---CAM::SET_THIRD_PERSON_CAM_ORBIT_DISTANCE_LIMITS_THIS_UPDATE(1f, 1f);  
	SET_THIRD_PERSON_CAM_ORBIT_DISTANCE_LIMITS_THIS_UPDATE = function(p0, distance) invoker.call(0xDF2E1F7742402E81, p0, distance) end,
	---  
	_GET_THIRD_PERSON_CAM_MIN_ORBIT_DISTANCE_SPRING = function() return invoker.call(0xBC456FB703431785).float end,
	---  
	_GET_THIRD_PERSON_CAM_MAX_ORBIT_DISTANCE_SPRING = function() return invoker.call(0xD4592A16D36673ED).float end,
	---Forces gameplay cam to specified vehicle as if you were in it  
	SET_IN_VEHICLE_CAM_STATE_THIS_UPDATE = function(p0, p1) invoker.call(0xE9EA16D6E54CDCA4, p0, p1) end,
	---Disables first person camera for the current frame.  
	---  
	---Found in decompiled scripts:  
	---GRAPHICS::DRAW_DEBUG_TEXT_2D("Disabling First Person Cam", 0.5, 0.8, 0.0, 0, 0, 255, 255);  
	---CAM::DISABLE_ON_FOOT_FIRST_PERSON_VIEW_THIS_UPDATE();  
	DISABLE_ON_FOOT_FIRST_PERSON_VIEW_THIS_UPDATE = function() invoker.call(0xDE2EF5DA284CC8DF) end,
	---  
	DISABLE_FIRST_PERSON_FLASH_EFFECT_THIS_UPDATE = function() invoker.call(0x59424BD75174C9B1) end,
	---  
	BLOCK_FIRST_PERSON_ORIENTATION_RESET_THIS_UPDATE = function() invoker.call(0x9F97DA93681F87EA) end,
	---  
	GET_FOLLOW_PED_CAM_ZOOM_LEVEL = function() return invoker.call(0x33E6C8EFD0CD93E9).int end,
	---See viewmode enum in CAM.GET_FOLLOW_VEHICLE_CAM_VIEW_MODE for return value  
	GET_FOLLOW_PED_CAM_VIEW_MODE = function() return invoker.call(0x8D4D46230B2C353A).int end,
	---Sets the type of Player camera:  
	---  
	---0 - Third Person Close  
	---1 - Third Person Mid  
	---2 - Third Person Far  
	---4 - First Person  
	SET_FOLLOW_PED_CAM_VIEW_MODE = function(viewMode) invoker.call(0x5A4F9EDF1673F704, viewMode) end,
	---  
	IS_FOLLOW_VEHICLE_CAM_ACTIVE = function() return invoker.call(0xCBBDE6D335D6D496).bool end,
	---  
	SET_FOLLOW_VEHICLE_CAM_HIGH_ANGLE_MODE_THIS_UPDATE = function(p0) invoker.call(0x91EF6EE6419E5B97, p0) end,
	---  
	SET_FOLLOW_VEHICLE_CAM_HIGH_ANGLE_MODE_EVERY_UPDATE = function(p0, p1) invoker.call(0x9DFE13ECDC1EC196, p0, p1) end,
	---  
	SET_TABLE_GAMES_CAMERA_THIS_UPDATE = function(hash) return invoker.call(0x79C0E43EB9B944E2, hash).bool end,
	---  
	GET_FOLLOW_VEHICLE_CAM_ZOOM_LEVEL = function() return invoker.call(0xEE82280AB767B690).int end,
	---  
	SET_FOLLOW_VEHICLE_CAM_ZOOM_LEVEL = function(zoomLevel) invoker.call(0x19464CB6E4078C8A, zoomLevel) end,
	---Returns the type of camera:  
	---  
	---enum _viewmode //0xA11D7CA8  
	---{  
	---	THIRD_PERSON_NEAR = 0,  
	---	THIRD_PERSON_MEDIUM = 1,  
	---	THIRD_PERSON_FAR = 2,  
	---	CINEMATIC = 3,  
	---	FIRST_PERSON = 4  
	---};  
	GET_FOLLOW_VEHICLE_CAM_VIEW_MODE = function() return invoker.call(0xA4FF579AC0E3AAAE).int end,
	---Sets the type of Player camera in vehicles:  
	---viewmode: see CAM.GET_FOLLOW_VEHICLE_CAM_VIEW_MODE  
	SET_FOLLOW_VEHICLE_CAM_VIEW_MODE = function(viewMode) invoker.call(0xAC253D7842768F48, viewMode) end,
	---context: see _GET_CAM_ACTIVE_VIEW_MODE_CONTEXT  
	GET_CAM_VIEW_MODE_FOR_CONTEXT = function(context) return invoker.call(0xEE778F8C7E1142E2, context).int end,
	---context: see _GET_CAM_ACTIVE_VIEW_MODE_CONTEXT, viewmode: see CAM.GET_FOLLOW_VEHICLE_CAM_VIEW_MODE  
	SET_CAM_VIEW_MODE_FOR_CONTEXT = function(context, viewMode) invoker.call(0x2A2173E46DAECD12, context, viewMode) end,
	---enum Context  
	---{  
	---	ON_FOOT,  
	---	IN_VEHICLE,  
	---	ON_BIKE,  
	---	IN_BOAT,  
	---	IN_AIRCRAFT,  
	---	IN_SUBMARINE,  
	---	IN_HELI,  
	---	IN_TURRET  
	---};  
	GET_CAM_ACTIVE_VIEW_MODE_CONTEXT = function() return invoker.call(0x19CAFA3C87F7C2FF).int end,
	---  
	USE_VEHICLE_CAM_STUNT_SETTINGS_THIS_UPDATE = function() invoker.call(0x6493CF69859B116A) end,
	---Sets gameplay camera to hash  
	USE_DEDICATED_STUNT_CAMERA_THIS_UPDATE = function(camName) invoker.call(0x425A920FDB9A0DDA, camName) end,
	---  
	FORCE_VEHICLE_CAM_STUNT_SETTINGS_THIS_UPDATE = function() invoker.call(0x0AA27680A0BD43FA) end,
	---  
	SET_FOLLOW_VEHICLE_CAM_SEAT_THIS_UPDATE = function(seatIndex) invoker.call(0x5C90CAB09951A12F, seatIndex) end,
	---  
	IS_AIM_CAM_ACTIVE = function() return invoker.call(0x68EDDA28A5976D07).bool end,
	---  
	IS_AIM_CAM_ACTIVE_IN_ACCURATE_MODE = function() return invoker.call(0x74BD83EA840F6BC9).bool end,
	---  
	IS_FIRST_PERSON_AIM_CAM_ACTIVE = function() return invoker.call(0x5E346D934122613F).bool end,
	---  
	DISABLE_AIM_CAM_THIS_UPDATE = function() invoker.call(0x1A31FE0049E542F6) end,
	---  
	GET_FIRST_PERSON_AIM_CAM_ZOOM_FACTOR = function() return invoker.call(0x7EC52CC40597D170).float end,
	---  
	SET_FIRST_PERSON_AIM_CAM_ZOOM_FACTOR = function(zoomFactor) invoker.call(0x70894BD0915C5BCA, zoomFactor) end,
	---  
	SET_FIRST_PERSON_AIM_CAM_ZOOM_FACTOR_LIMITS_THIS_UPDATE = function(p0, p1) invoker.call(0xCED08CBE8EBB97C7, p0, p1) end,
	---  
	SET_FIRST_PERSON_AIM_CAM_RELATIVE_HEADING_LIMITS_THIS_UPDATE = function(p0, p1) invoker.call(0x2F7F2B26DD3F18EE, p0, p1) end,
	---  
	SET_FIRST_PERSON_AIM_CAM_RELATIVE_PITCH_LIMITS_THIS_UPDATE = function(p0, p1) invoker.call(0xBCFC632DB7673BF0, p0, p1) end,
	---  
	SET_FIRST_PERSON_AIM_CAM_NEAR_CLIP_THIS_UPDATE = function(p0) invoker.call(0x0AF7B437918103B3, p0) end,
	---  
	SET_THIRD_PERSON_AIM_CAM_NEAR_CLIP_THIS_UPDATE = function(p0) invoker.call(0x42156508606DE65E, p0) end,
	---  
	SET_ALLOW_CUSTOM_VEHICLE_DRIVE_BY_CAM_THIS_UPDATE = function(p0) invoker.call(0x4008EDF7D6E48175, p0) end,
	---  
	FORCE_TIGHTSPACE_CUSTOM_FRAMING_THIS_UPDATE = function() invoker.call(0x380B4968D1E09E55) end,
	---  
	GET_FINAL_RENDERED_CAM_COORD = function() return invoker.call(0xA200EB1EE790F448).scr_vec3 end,
	---p0 seems to consistently be 2 across scripts  
	---  
	---Function is called faily often by CAM::CREATE_CAM_WITH_PARAMS  
	GET_FINAL_RENDERED_CAM_ROT = function(rotationOrder) return invoker.call(0x5B4E4C817FCC2DFB, rotationOrder).scr_vec3 end,
	---  
	GET_FINAL_RENDERED_REMOTE_PLAYER_CAM_ROT = function(player, rotationOrder) return invoker.call(0x26903D9CD1175F2C, player, rotationOrder).scr_vec3 end,
	---Gets some camera fov  
	GET_FINAL_RENDERED_CAM_FOV = function() return invoker.call(0x80EC114669DAEFF4).float end,
	---  
	GET_FINAL_RENDERED_REMOTE_PLAYER_CAM_FOV = function(player) return invoker.call(0x5F35F6732C3FBBA0, player).float end,
	---  
	GET_FINAL_RENDERED_CAM_NEAR_CLIP = function() return invoker.call(0xD0082607100D7193).float end,
	---  
	GET_FINAL_RENDERED_CAM_FAR_CLIP = function() return invoker.call(0xDFC8CBC606FDB0FC).float end,
	---  
	GET_FINAL_RENDERED_CAM_NEAR_DOF = function() return invoker.call(0xA03502FC581F7D9B).float end,
	---  
	GET_FINAL_RENDERED_CAM_FAR_DOF = function() return invoker.call(0x9780F32BCAF72431).float end,
	---  
	GET_FINAL_RENDERED_CAM_MOTION_BLUR_STRENGTH = function() return invoker.call(0x162F9D995753DC19).float end,
	---  
	SET_GAMEPLAY_COORD_HINT = function(x, y, z, duration, blendOutDuration, blendInDuration, p6) invoker.call(0xD51ADCD2D8BC0FB3, x, y, z, duration, blendOutDuration, blendInDuration, p6) end,
	---  
	SET_GAMEPLAY_PED_HINT = function(ped, x1, y1, z1, p4, duration, blendOutDuration, blendInDuration) invoker.call(0x2B486269ACD548D3, ped, x1, y1, z1, p4, duration, blendOutDuration, blendInDuration) end,
	---Focuses the camera on the specified vehicle.  
	SET_GAMEPLAY_VEHICLE_HINT = function(vehicle, offsetX, offsetY, offsetZ, p4, time, easeInTime, easeOutTime) invoker.call(0xA2297E18F3E71C2E, vehicle, offsetX, offsetY, offsetZ, p4, time, easeInTime, easeOutTime) end,
	---  
	SET_GAMEPLAY_OBJECT_HINT = function(object, xOffset, yOffset, zOffset, p4, time, easeInTime, easeOutTime) invoker.call(0x83E87508A2CA2AC6, object, xOffset, yOffset, zOffset, p4, time, easeInTime, easeOutTime) end,
	---p8 could be some sort of flag. Scripts use:  
	----244429742  
	---0  
	---1726668277  
	---1844968929  
	SET_GAMEPLAY_ENTITY_HINT = function(entity, xOffset, yOffset, zOffset, p4, time, easeInTime, easeOutTime, p8) invoker.call(0x189E955A8313E298, entity, xOffset, yOffset, zOffset, p4, time, easeInTime, easeOutTime, p8) end,
	---  
	IS_GAMEPLAY_HINT_ACTIVE = function() return invoker.call(0xE520FF1AD2785B40).bool end,
	---  
	STOP_GAMEPLAY_HINT = function(p0) invoker.call(0xF46C581C61718916, p0) end,
	---This native does absolutely nothing, just a nullsub  
	STOP_GAMEPLAY_HINT_BEING_CANCELLED_THIS_UPDATE = function(p0) invoker.call(0xCCD078C2665D2973, p0) end,
	---  
	STOP_CODE_GAMEPLAY_HINT = function(p0) invoker.call(0x247ACBC4ABBC9D1C, p0) end,
	---  
	IS_CODE_GAMEPLAY_HINT_ACTIVE = function() return invoker.call(0xBF72910D0F26F025).bool end,
	---  
	SET_GAMEPLAY_HINT_FOV = function(FOV) invoker.call(0x513403FB9C56211F, FOV) end,
	---  
	SET_GAMEPLAY_HINT_FOLLOW_DISTANCE_SCALAR = function(value) invoker.call(0xF8BDBF3D573049A1, value) end,
	---  
	SET_GAMEPLAY_HINT_BASE_ORBIT_PITCH_OFFSET = function(value) invoker.call(0xD1F8363DFAD03848, value) end,
	---  
	SET_GAMEPLAY_HINT_CAMERA_RELATIVE_SIDE_OFFSET = function(xOffset) invoker.call(0x5D7B620DAE436138, xOffset) end,
	---  
	SET_GAMEPLAY_HINT_CAMERA_RELATIVE_VERTICAL_OFFSET = function(yOffset) invoker.call(0xC92717EF615B6704, yOffset) end,
	---  
	SET_GAMEPLAY_HINT_CAMERA_BLEND_TO_FOLLOW_PED_MEDIUM_VIEW_MODE = function(toggle) invoker.call(0xE3433EADAAF7EE40, toggle) end,
	---  
	SET_CINEMATIC_BUTTON_ACTIVE = function(p0) invoker.call(0x51669F7D1FB53D9F, p0) end,
	---  
	IS_CINEMATIC_CAM_RENDERING = function() return invoker.call(0xB15162CB5826E9E8).bool end,
	---p0 argument found in the b617d scripts: "DRUNK_SHAKE"  
	---  
	---Full list of cam shake types by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/camShakeTypesCompact.json  
	SHAKE_CINEMATIC_CAM = function(shakeType, amount) invoker.call(0xDCE214D9ED58F3CF, shakeType, amount) end,
	---  
	IS_CINEMATIC_CAM_SHAKING = function() return invoker.call(0xBBC08F6B4CB8FF0A).bool end,
	---  
	SET_CINEMATIC_CAM_SHAKE_AMPLITUDE = function(p0) invoker.call(0xC724C701C30B2FE7, p0) end,
	---  
	STOP_CINEMATIC_CAM_SHAKING = function(p0) invoker.call(0x2238E588E588A6D7, p0) end,
	---  
	DISABLE_CINEMATIC_BONNET_CAMERA_THIS_UPDATE = function() invoker.call(0xADFF1B2A555F5FBA) end,
	---  
	DISABLE_CINEMATIC_VEHICLE_IDLE_MODE_THIS_UPDATE = function() invoker.call(0x62ECFCFDEE7885D6) end,
	---Resets the vehicle idle camera timer. Calling this in a loop will disable the idle camera.  
	INVALIDATE_CINEMATIC_VEHICLE_IDLE_MODE = function() invoker.call(0x9E4CFFF989258472) end,
	---Resets the idle camera timer. Calling that in a loop once every few seconds is enough to disable the idle cinematic camera.  
	INVALIDATE_IDLE_CAM = function() invoker.call(0xF4F2C0D4EE209E20) end,
	---  
	IS_CINEMATIC_IDLE_CAM_RENDERING = function() return invoker.call(0xCA9D2AA3E326D720).bool end,
	---  
	IS_CINEMATIC_FIRST_PERSON_VEHICLE_INTERIOR_CAM_RENDERING = function() return invoker.call(0x4F32C0D5A90A9B40).bool end,
	---hash is always JOAAT("CAMERA_MAN_SHOT") in decompiled scripts  
	CREATE_CINEMATIC_SHOT = function(p0, time, p2, entity) invoker.call(0x741B0129D4560F31, p0, time, p2, entity) end,
	---Hash is always JOAAT("CAMERA_MAN_SHOT") in decompiled scripts  
	IS_CINEMATIC_SHOT_ACTIVE = function(p0) return invoker.call(0xCC9F3371A7C28BC9, p0).bool end,
	---Only used once in carsteal3 with p0 set to -1096069633 (CAMERA_MAN_SHOT)  
	STOP_CINEMATIC_SHOT = function(p0) invoker.call(0x7660C6E75D3A078E, p0) end,
	---  
	FORCE_CINEMATIC_RENDERING_THIS_UPDATE = function(toggle) invoker.call(0xA41BCD7213805AAC, toggle) end,
	---  
	SET_CINEMATIC_NEWS_CHANNEL_ACTIVE_THIS_UPDATE = function() invoker.call(0xDC9DA9E8789F5246) end,
	---Toggles the vehicle cinematic cam; requires the player ped to be in a vehicle to work.  
	SET_CINEMATIC_MODE_ACTIVE = function(toggle) invoker.call(0xDCF0754AC3D6FD4E, toggle) end,
	---  
	IS_IN_VEHICLE_MOBILE_PHONE_CAMERA_RENDERING = function() return invoker.call(0x1F2300CB7FA7B7F6).bool end,
	---  
	DISABLE_CINEMATIC_SLOW_MO_THIS_UPDATE = function() return invoker.call(0x17FCA7199A530203).bool end,
	---  
	IS_BONNET_CINEMATIC_CAM_RENDERING = function() return invoker.call(0xD7360051C885628B).bool end,
	---Tests some cinematic camera flags  
	IS_CINEMATIC_CAM_INPUT_ACTIVE = function() return invoker.call(0xF5F1E89A970B7796).bool end,
	---  
	IGNORE_MENU_PREFERENCE_FOR_BONNET_CAMERA_THIS_UPDATE = function() invoker.call(0x7B8A361C1813FBEF) end,
	---  
	BYPASS_CUTSCENE_CAM_RENDERING_THIS_UPDATE = function() invoker.call(0xDB629FFD9285FA06) end,
	---  
	STOP_CUTSCENE_CAM_SHAKING = function(p0) invoker.call(0x324C5AA411DA7737, p0) end,
	---Hardcoded to only work in multiplayer.  
	SET_CUTSCENE_CAM_FAR_CLIP_THIS_UPDATE = function(p0) invoker.call(0x12DED8CA53D47EA5, p0) end,
	---  
	GET_FOCUS_PED_ON_SCREEN = function(p0, p1, p2, p3, p4, p5, p6, p7, p8) return invoker.call(0x89215EC747DF244A, p0, p1, p2, p3, p4, p5, p6, p7, p8).int end,
	---  
	DISABLE_NEAR_CLIP_SCAN_THIS_UPDATE = function() invoker.call(0x5A43C76F7FC7BA5F) end,
	---if p0 is 0, effect is cancelled  
	---  
	---if p0 is 1, effect zooms in, gradually tilts cam clockwise apx 30 degrees, wobbles slowly. Motion blur is active until cancelled.  
	---  
	---if p0 is 2, effect immediately tilts cam clockwise apx 30 degrees, begins to wobble slowly, then gradually tilts cam back to normal. The wobbling will continue until the effect is cancelled.  
	SET_CAM_DEATH_FAIL_EFFECT_STATE = function(p0) invoker.call(0x80C8B1846639BB19, p0) end,
	---  
	SET_FIRST_PERSON_FLASH_EFFECT_TYPE = function(p0) invoker.call(0x5C41E6BABC9E2112, p0) end,
	---From b617 scripts:  
	---  
	---CAM::SET_FIRST_PERSON_FLASH_EFFECT_VEHICLE_MODEL_NAME("DINGHY");  
	---CAM::SET_FIRST_PERSON_FLASH_EFFECT_VEHICLE_MODEL_NAME("ISSI2");  
	---CAM::SET_FIRST_PERSON_FLASH_EFFECT_VEHICLE_MODEL_NAME("SPEEDO");  
	SET_FIRST_PERSON_FLASH_EFFECT_VEHICLE_MODEL_NAME = function(vehicleName) invoker.call(0x21E253A7F8DA5DFB, vehicleName) end,
	---  
	SET_FIRST_PERSON_FLASH_EFFECT_VEHICLE_MODEL_HASH = function(vehicleModel) invoker.call(0x11FA5D3479C7DD47, vehicleModel) end,
	---  
	IS_ALLOWED_INDEPENDENT_CAMERA_MODES = function() return invoker.call(0xEAF0FA793D05C592).bool end,
	---  
	CAMERA_PREVENT_COLLISION_SETTINGS_FOR_TRIPLEHEAD_IN_INTERIORS_THIS_UPDATE = function() invoker.call(0x62374889A4D59F72) end,
	---  
	REPLAY_GET_MAX_DISTANCE_ALLOWED_FROM_PLAYER = function() return invoker.call(0x8BFCEB5EA1B161B6).float end,
}
CLOCK={
	---SET_CLOCK_TIME(12, 34, 56);  
	SET_CLOCK_TIME = function(hour, minute, second) invoker.call(0x47C3B5848C3E45D8, hour, minute, second) end,
	---  
	PAUSE_CLOCK = function(toggle) invoker.call(0x4055E40BD2DBEC1D, toggle) end,
	---  
	ADVANCE_CLOCK_TIME_TO = function(hour, minute, second) invoker.call(0xC8CA9670B9D83B3B, hour, minute, second) end,
	---  
	ADD_TO_CLOCK_TIME = function(hours, minutes, seconds) invoker.call(0xD716F30D8C8980E2, hours, minutes, seconds) end,
	---Gets the current ingame hour, expressed without zeros. (09:34 will be represented as 9)  
	GET_CLOCK_HOURS = function() return invoker.call(0x25223CA6B4D20B7F).int end,
	---Gets the current ingame clock minute.  
	GET_CLOCK_MINUTES = function() return invoker.call(0x13D2B8ADD79640F2).int end,
	---Gets the current ingame clock second. Note that ingame clock seconds change really fast since a day in GTA is only 48 minutes in real life.  
	GET_CLOCK_SECONDS = function() return invoker.call(0x494E97C2EF27C470).int end,
	---  
	SET_CLOCK_DATE = function(day, month, year) invoker.call(0xB096419DF0D06CE7, day, month, year) end,
	---Gets the current day of the week.  
	---  
	---0: Sunday  
	---1: Monday  
	---2: Tuesday  
	---3: Wednesday  
	---4: Thursday  
	---5: Friday  
	---6: Saturday  
	GET_CLOCK_DAY_OF_WEEK = function() return invoker.call(0xD972E4BD7AEB235F).int end,
	---  
	GET_CLOCK_DAY_OF_MONTH = function() return invoker.call(0x3D10BC92A4DB1D35).int end,
	---  
	GET_CLOCK_MONTH = function() return invoker.call(0xBBC72712E80257A1).int end,
	---  
	GET_CLOCK_YEAR = function() return invoker.call(0x961777E64BDAF717).int end,
	---  
	GET_MILLISECONDS_PER_GAME_MINUTE = function() return invoker.call(0x2F8B4D1C595B11DB).int end,
	---Gets system time as year, month, day, hour, minute and second.  
	---  
	---Example usage:  
	---  
	---    int year;  
	--- int month;  
	---    int day;  
	---  int hour;  
	--- int minute;  
	---   int second;  
	---  
	--- TIME::GET_POSIX_TIME(&year, &month, &day, &hour, &minute, &second);  
	---  
	GET_POSIX_TIME = function(year, month, day, hour, minute, second) invoker.call(0xDA488F299A5B164E, year, month, day, hour, minute, second) end,
	---Gets current UTC time  
	GET_UTC_TIME = function(year, month, day, hour, minute, second) invoker.call(0x8117E09A19EEF4D3, year, month, day, hour, minute, second) end,
	---Gets local system time as year, month, day, hour, minute and second.  
	---  
	---Example usage:  
	---  
	---int year;  
	---int month;  
	---int day;  
	---int hour;  
	---int minute;  
	---int second;  
	---or use std::tm struct  
	---  
	---TIME::GET_LOCAL_TIME(&year, &month, &day, &hour, &minute, &second);  
	---  
	GET_LOCAL_TIME = function(year, month, day, hour, minute, second) invoker.call(0x50C7A99057A69748, year, month, day, hour, minute, second) end,
}
CUTSCENE={
	---flags: Usually 8  
	---Full list of cutscene names by DurtyFree https://github.com/DurtyFree/gta-v-data-dumps/blob/master/cutsceneNames.json  
	REQUEST_CUTSCENE = function(cutsceneName, flags) invoker.call(0x7A86743F475D9E09, cutsceneName, flags) end,
	---flags: Usually 8  
	---  
	---playbackFlags: Which scenes should be played.  
	---Example: 0x105 (bit 0, 2 and 8 set) will enable scene 1, 3 and 9.  
	---Full list of cutscene names by DurtyFree https://github.com/DurtyFree/gta-v-data-dumps/blob/master/cutsceneNames.json  
	REQUEST_CUTSCENE_WITH_PLAYBACK_LIST = function(cutsceneName, playbackFlags, flags) invoker.call(0xC23DE0E91C30B58C, cutsceneName, playbackFlags, flags) end,
	---  
	REMOVE_CUTSCENE = function() invoker.call(0x440AF51A3462B86F) end,
	---  
	HAS_CUTSCENE_LOADED = function() return invoker.call(0xC59F528E9AB9F339).bool end,
	---Full list of cutscene names by DurtyFree https://github.com/DurtyFree/gta-v-data-dumps/blob/master/cutsceneNames.json  
	HAS_THIS_CUTSCENE_LOADED = function(cutsceneName) return invoker.call(0x228D3D94F8A11C3C, cutsceneName).bool end,
	---Sets the cutscene's owning thread ID.  
	SET_SCRIPT_CAN_START_CUTSCENE = function(threadId) invoker.call(0x8D9DF6ECA8768583, threadId) end,
	---  
	CAN_REQUEST_ASSETS_FOR_CUTSCENE_ENTITY = function() return invoker.call(0xB56BBBCC2955D9CB).bool end,
	---  
	IS_CUTSCENE_PLAYBACK_FLAG_SET = function(flag) return invoker.call(0x71B74D2AE19338D0, flag).bool end,
	---  
	SET_CUTSCENE_ENTITY_STREAMING_FLAGS = function(cutsceneEntName, p1, p2) invoker.call(0x4C61C75BEE8184C2, cutsceneEntName, p1, p2) end,
	---Simply loads the cutscene and doesn't do extra stuff that REQUEST_CUTSCENE does.  
	---Full list of cutscene names by DurtyFree https://github.com/DurtyFree/gta-v-data-dumps/blob/master/cutsceneNames.json  
	REQUEST_CUT_FILE = function(cutsceneName) invoker.call(0x06A3524161C502BA, cutsceneName) end,
	---Simply checks if the cutscene has loaded and doesn't check via CutSceneManager as opposed to HAS_[THIS]_CUTSCENE_LOADED.  
	---Full list of cutscene names by DurtyFree https://github.com/DurtyFree/gta-v-data-dumps/blob/master/cutsceneNames.json  
	HAS_CUT_FILE_LOADED = function(cutsceneName) return invoker.call(0xA1C996C2A744262E, cutsceneName).bool end,
	---Simply unloads the cutscene and doesn't do extra stuff that REMOVE_CUTSCENE does.  
	---Full list of cutscene names by DurtyFree https://github.com/DurtyFree/gta-v-data-dumps/blob/master/cutsceneNames.json  
	REMOVE_CUT_FILE = function(cutsceneName) invoker.call(0xD00D76A7DFC9D852, cutsceneName) end,
	---  
	GET_CUT_FILE_OFFSET = function(cutsceneName, index) return invoker.call(0x1FA904B60E492336, cutsceneName, index).scr_vec3 end,
	---Full list of cutscene names by DurtyFree https://github.com/DurtyFree/gta-v-data-dumps/blob/master/cutsceneNames.json  
	GET_CUT_FILE_CONCAT_COUNT = function(cutsceneName) return invoker.call(0x0ABC54DE641DC0FC, cutsceneName).int end,
	---flags: Usually 0.  
	START_CUTSCENE = function(flags) invoker.call(0x186D5CB5E7B0FF7B, flags) end,
	---flags: Usually 0.  
	START_CUTSCENE_AT_COORDS = function(x, y, z, flags) invoker.call(0x1C9ADDA3244A1FBF, x, y, z, flags) end,
	---  
	STOP_CUTSCENE = function(p0) invoker.call(0xC7272775B4DC786E, p0) end,
	---  
	STOP_CUTSCENE_IMMEDIATELY = function() invoker.call(0xD220BDD222AC4A1E) end,
	---p3 could be heading. Needs more research.  
	SET_CUTSCENE_ORIGIN = function(x, y, z, p3, p4) invoker.call(0xB812B3FD1C01CF27, x, y, z, p3, p4) end,
	---  
	SET_CUTSCENE_ORIGIN_AND_ORIENTATION = function(x1, y1, z1, x2, y2, z2, p6) invoker.call(0x011883F41211432A, x1, y1, z1, x2, y2, z2, p6) end,
	---  
	GET_CUTSCENE_TIME = function() return invoker.call(0xE625BEABBAFFDAB9).int end,
	---  
	GET_CUTSCENE_PLAY_TIME = function() return invoker.call(0x710286BC5EF4D6E1).int end,
	---  
	GET_CUTSCENE_TOTAL_DURATION = function() return invoker.call(0xEE53B14A19E480D4).int end,
	---  
	GET_CUTSCENE_END_TIME = function() return invoker.call(0x971D7B15BCDBEF99).int end,
	---  
	GET_CUTSCENE_PLAY_DURATION = function() return invoker.call(0x5D583F71C901F2A3).int end,
	---  
	WAS_CUTSCENE_SKIPPED = function() return invoker.call(0x40C8656EDAEDD569).bool end,
	---  
	HAS_CUTSCENE_FINISHED = function() return invoker.call(0x7C0A893088881D57).bool end,
	---  
	IS_CUTSCENE_ACTIVE = function() return invoker.call(0x991251AFC3981F84).bool end,
	---  
	IS_CUTSCENE_PLAYING = function() return invoker.call(0xD3C2E180A40F031E).bool end,
	---  
	GET_CUTSCENE_SECTION_PLAYING = function() return invoker.call(0x49010A6A396553D8).int end,
	---  
	GET_ENTITY_INDEX_OF_CUTSCENE_ENTITY = function(cutsceneEntName, modelHash) return invoker.call(0x0A2E9FDB9A8C62F6, cutsceneEntName, modelHash).int end,
	---  
	GET_CUTSCENE_CONCAT_SECTION_PLAYING = function() return invoker.call(0x583DF8E3D4AFBD98).int end,
	---This function is hard-coded to always return 1.  
	IS_CUTSCENE_AUTHORIZED = function(cutsceneName) return invoker.call(0x4CEBC1ED31E8925E, cutsceneName).bool end,
	---  
	DOES_CUTSCENE_HANDLE_EXIST = function(cutsceneHandle) return invoker.call(0x4FCD976DA686580C, cutsceneHandle).int end,
	---  
	REGISTER_ENTITY_FOR_CUTSCENE = function(cutscenePed, cutsceneEntName, p2, modelHash, p4) invoker.call(0xE40C1C56DF95C2E8, cutscenePed, cutsceneEntName, p2, modelHash, p4) end,
	---  
	GET_ENTITY_INDEX_OF_REGISTERED_ENTITY = function(cutsceneEntName, modelHash) return invoker.call(0xC0741A26499654CD, cutsceneEntName, modelHash).int end,
	---Full list of vehicles by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/vehicles.json  
	SET_VEHICLE_MODEL_PLAYER_WILL_EXIT_SCENE = function(modelHash) invoker.call(0x7F96F23FA9B73327, modelHash) end,
	---Only used twice in R* scripts  
	SET_CUTSCENE_TRIGGER_AREA = function(x1, y1, z1, x2, y2, z2) invoker.call(0x9896CE4721BE84BA, x1, y1, z1, x2, y2, z2) end,
	---modelHash (p1) was always 0 in R* scripts  
	CAN_SET_ENTER_STATE_FOR_REGISTERED_ENTITY = function(cutsceneEntName, modelHash) return invoker.call(0x645D0B458D8E17B5, cutsceneEntName, modelHash).bool end,
	---  
	CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY = function(cutsceneEntName, modelHash) return invoker.call(0x4C6A6451C79E4662, cutsceneEntName, modelHash).bool end,
	---  
	CAN_SET_EXIT_STATE_FOR_CAMERA = function(p0) return invoker.call(0xB2CBCD0930DFB420, p0).bool end,
	---Toggles a value (bool) for cutscenes.  
	SET_PAD_CAN_SHAKE_DURING_CUTSCENE = function(toggle) invoker.call(0xC61B86C9F61EB404, toggle) end,
	---  
	SET_CUTSCENE_FADE_VALUES = function(p0, p1, p2, p3) invoker.call(0x8093F23ABACCC7D4, p0, p1, p2, p3) end,
	---  
	SET_CUTSCENE_MULTIHEAD_FADE = function(p0, p1, p2, p3) invoker.call(0x20746F7B1032A3C7, p0, p1, p2, p3) end,
	---  
	SET_CUTSCENE_MULTIHEAD_FADE_MANUAL = function(p0) invoker.call(0x06EE9048FD080382, p0) end,
	---  
	IS_MULTIHEAD_FADE_UP = function() return invoker.call(0xA0FE76168A189DDB).bool end,
	---  
	NETWORK_SET_MOCAP_CUTSCENE_CAN_BE_SKIPPED = function(toggle) invoker.call(0x2F137B508DE238F2, toggle) end,
	---  
	SET_CAR_GENERATORS_CAN_UPDATE_DURING_CUTSCENE = function(p0) invoker.call(0xE36A98D8AB3D3C66, p0) end,
	---  
	CAN_USE_MOBILE_PHONE_DURING_CUTSCENE = function() return invoker.call(0x5EDEF0CF8C1DAB3C).bool end,
	---  
	SET_CUTSCENE_CAN_BE_SKIPPED = function(p0) invoker.call(0x41FAA8FB2ECE8720, p0) end,
	---  
	SET_CAN_DISPLAY_MINIMAP_DURING_CUTSCENE_THIS_UPDATE = function() invoker.call(0x2131046957F31B04) end,
	---Full list of ped components by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/pedComponentVariations.json  
	SET_CUTSCENE_PED_COMPONENT_VARIATION = function(cutsceneEntName, componentId, drawableId, textureId, modelHash) invoker.call(0xBA01E7B6DEEFBBC9, cutsceneEntName, componentId, drawableId, textureId, modelHash) end,
	---  
	SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED = function(cutsceneEntName, ped, modelHash) invoker.call(0x2A56C06EBEF2B0D9, cutsceneEntName, ped, modelHash) end,
	---  
	DOES_CUTSCENE_ENTITY_EXIST = function(cutsceneEntName, modelHash) return invoker.call(0x499EF20C5DB25C59, cutsceneEntName, modelHash).bool end,
	---Thanks R*! ;)  
	---  
	---if ((l_161 == 0) || (l_161 == 2)) {  
	---    sub_2ea27("Trying to set Jimmy prop variation");  
	---    CUTSCENE::SET_CUTSCENE_PED_PROP_VARIATION("Jimmy_Boston", 1, 0, 0, 0);  
	---}  
	---  
	---Full list of ped components by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/pedComponentVariations.json  
	SET_CUTSCENE_PED_PROP_VARIATION = function(cutsceneEntName, componentId, drawableId, textureId, modelHash) invoker.call(0x0546524ADE2E9723, cutsceneEntName, componentId, drawableId, textureId, modelHash) end,
	---Possibly HAS_CUTSCENE_CUT_THIS_FRAME, needs more research.  
	HAS_CUTSCENE_CUT_THIS_FRAME = function() return invoker.call(0x708BDD8CD795B043).bool end,
}
DATAFILE={
	---Adds the given requestID to the watch list.  
	DATAFILE_WATCH_REQUEST_ID = function(requestId) invoker.call(0xAD6875BBC0FC899C, requestId) end,
	---  
	DATAFILE_CLEAR_WATCH_LIST = function() invoker.call(0x6CC86E78358D5119) end,
	---  
	DATAFILE_IS_VALID_REQUEST_ID = function(index) return invoker.call(0xFCCAE5B92A830878, index).bool end,
	---  
	DATAFILE_HAS_LOADED_FILE_DATA = function(requestId) return invoker.call(0x15FF52B809DB2353, requestId).bool end,
	---  
	DATAFILE_HAS_VALID_FILE_DATA = function(requestId) return invoker.call(0xF8CC1EBE0B62E29F, requestId).bool end,
	---  
	DATAFILE_SELECT_ACTIVE_FILE = function(requestId, p1) return invoker.call(0x22DA66936E0FFF37, requestId, p1).bool end,
	---  
	DATAFILE_DELETE_REQUESTED_FILE = function(requestId) return invoker.call(0x8F5EA1C01D65A100, requestId).bool end,
	---  
	UGC_CREATE_CONTENT = function(data, dataCount, contentName, description, tagsCsv, contentTypeName, publish, p7) return invoker.call(0xC84527E235FCA219, data, dataCount, contentName, description, tagsCsv, contentTypeName, publish, p7).bool end,
	---  
	UGC_CREATE_MISSION = function(contentName, description, tagsCsv, contentTypeName, publish, p5) return invoker.call(0xA5EFC3E847D60507, contentName, description, tagsCsv, contentTypeName, publish, p5).bool end,
	---  
	UGC_UPDATE_CONTENT = function(contentId, data, dataCount, contentName, description, tagsCsv, contentTypeName, p7) return invoker.call(0x648E7A5434AF7969, contentId, data, dataCount, contentName, description, tagsCsv, contentTypeName, p7).bool end,
	---  
	UGC_UPDATE_MISSION = function(contentId, contentName, description, tagsCsv, contentTypeName, p5) return invoker.call(0x4645DE9980999E93, contentId, contentName, description, tagsCsv, contentTypeName, p5).bool end,
	---  
	UGC_SET_PLAYER_DATA = function(contentId, rating, contentTypeName, p3) return invoker.call(0x692D808C34A82143, contentId, rating, contentTypeName, p3).bool end,
	---  
	DATAFILE_SELECT_UGC_DATA = function(p0, p1) return invoker.call(0xA69AC4ADE82B57A4, p0, p1).bool end,
	---  
	DATAFILE_SELECT_UGC_STATS = function(p0, p1, p2) return invoker.call(0x9CB0BFA7A9342C3D, p0, p1, p2).bool end,
	---  
	DATAFILE_SELECT_UGC_PLAYER_DATA = function(p0, p1) return invoker.call(0x52818819057F2B40, p0, p1).bool end,
	---  
	DATAFILE_SELECT_CREATOR_STATS = function(p0, p1) return invoker.call(0x01095C95CD46B624, p0, p1).bool end,
	---Loads a User-Generated Content (UGC) file. These files can be found in "[GTA5]\data\ugc" and "[GTA5]\common\patch\ugc". They seem to follow a naming convention, most likely of "[name]_[part].ugc". See example below for usage.  
	---  
	---Returns whether or not the file was successfully loaded.  
	---  
	---Example:  
	---DATAFILE::DATAFILE_LOAD_OFFLINE_UGC("RockstarPlaylists") // loads "rockstarplaylists_00.ugc"  
	DATAFILE_LOAD_OFFLINE_UGC = function(filename, p1) return invoker.call(0xC5238C011AF405E4, filename, p1).bool end,
	---  
	DATAFILE_CREATE = function(p0) invoker.call(0xD27058A1CA2B13EE, p0) end,
	---  
	DATAFILE_DELETE = function(p0) invoker.call(0x9AB9C1CFC8862DFB, p0) end,
	---  
	DATAFILE_STORE_MISSION_HEADER = function(p0) invoker.call(0x2ED61456317B8178, p0) end,
	---  
	DATAFILE_FLUSH_MISSION_HEADER = function() invoker.call(0xC55854C7D7274882) end,
	---  
	DATAFILE_GET_FILE_DICT = function(p0) return invoker.call(0x906B778CA1DC72B6, p0).int end,
	---  
	DATAFILE_START_SAVE_TO_CLOUD = function(filename, p1) return invoker.call(0x83BCCE3224735F05, filename, p1).bool end,
	---  
	DATAFILE_UPDATE_SAVE_TO_CLOUD = function(p0) return invoker.call(0x4DFDD9EB705F8140, p0).bool end,
	---  
	DATAFILE_IS_SAVE_PENDING = function() return invoker.call(0xBEDB96A7584AA8CF).bool end,
	---  
	DATAFILE_LOAD_OFFLINE_UGC_FOR_ADDITIONAL_DATA_FILE = function(p0, p1) return invoker.call(0xA6EEF01087181EDD, p0, p1).bool end,
	---  
	DATAFILE_DELETE_FOR_ADDITIONAL_DATA_FILE = function(p0) invoker.call(0x6AD0BD5E087866CB, p0) end,
	---  
	DATAFILE_GET_FILE_DICT_FOR_ADDITIONAL_DATA_FILE = function(p0) return invoker.call(0xDBF860CF1DB8E599, p0).int end,
	---  
	DATADICT_SET_BOOL = function(objectData, key, value) invoker.call(0x35124302A556A325, objectData, key, value) end,
	---  
	DATADICT_SET_INT = function(objectData, key, value) invoker.call(0xE7E035450A7948D5, objectData, key, value) end,
	---  
	DATADICT_SET_FLOAT = function(objectData, key, value) invoker.call(0xC27E1CC2D795105E, objectData, key, value) end,
	---  
	DATADICT_SET_STRING = function(objectData, key, value) invoker.call(0x8FF3847DADD8E30C, objectData, key, value) end,
	---  
	DATADICT_SET_VECTOR = function(objectData, key, valueX, valueY, valueZ) invoker.call(0x4CD49B76338C7DEE, objectData, key, valueX, valueY, valueZ) end,
	---  
	DATADICT_CREATE_DICT = function(objectData, key) return invoker.call(0xA358F56F10732EE1, objectData, key).int end,
	---  
	DATADICT_CREATE_ARRAY = function(objectData, key) return invoker.call(0x5B11728527CA6E5F, objectData, key).int end,
	---  
	DATADICT_GET_BOOL = function(objectData, key) return invoker.call(0x1186940ED72FFEEC, objectData, key).bool end,
	---  
	DATADICT_GET_INT = function(objectData, key) return invoker.call(0x78F06F6B1FB5A80C, objectData, key).int end,
	---  
	DATADICT_GET_FLOAT = function(objectData, key) return invoker.call(0x06610343E73B9727, objectData, key).float end,
	---  
	DATADICT_GET_STRING = function(objectData, key) return invoker.call(0x3D2FD9E763B24472, objectData, key).str end,
	---  
	DATADICT_GET_VECTOR = function(objectData, key) return invoker.call(0x46CD3CB66E0825CC, objectData, key).scr_vec3 end,
	---  
	DATADICT_GET_DICT = function(objectData, key) return invoker.call(0xB6B9DDC412FCEEE2, objectData, key).int end,
	---  
	DATADICT_GET_ARRAY = function(objectData, key) return invoker.call(0x7A983AA9DA2659ED, objectData, key).int end,
	---Types:  
	---1 = Boolean  
	---2 = Integer  
	---3 = Float  
	---4 = String  
	---5 = Vector3  
	---6 = Object  
	---7 = Array  
	DATADICT_GET_TYPE = function(objectData, key) return invoker.call(0x031C55ED33227371, objectData, key).int end,
	---  
	DATAARRAY_ADD_BOOL = function(arrayData, value) invoker.call(0xF8B0F5A43E928C76, arrayData, value) end,
	---  
	DATAARRAY_ADD_INT = function(arrayData, value) invoker.call(0xCABDB751D86FE93B, arrayData, value) end,
	---  
	DATAARRAY_ADD_FLOAT = function(arrayData, value) invoker.call(0x57A995FD75D37F56, arrayData, value) end,
	---  
	DATAARRAY_ADD_STRING = function(arrayData, value) invoker.call(0x2F0661C155AEEEAA, arrayData, value) end,
	---  
	DATAARRAY_ADD_VECTOR = function(arrayData, valueX, valueY, valueZ) invoker.call(0x407F8D034F70F0C2, arrayData, valueX, valueY, valueZ) end,
	---  
	DATAARRAY_ADD_DICT = function(arrayData) return invoker.call(0x6889498B3E19C797, arrayData).int end,
	---  
	DATAARRAY_GET_BOOL = function(arrayData, arrayIndex) return invoker.call(0x50C1B2874E50C114, arrayData, arrayIndex).bool end,
	---  
	DATAARRAY_GET_INT = function(arrayData, arrayIndex) return invoker.call(0x3E5AE19425CD74BE, arrayData, arrayIndex).int end,
	---  
	DATAARRAY_GET_FLOAT = function(arrayData, arrayIndex) return invoker.call(0xC0C527B525D7CFB5, arrayData, arrayIndex).float end,
	---  
	DATAARRAY_GET_STRING = function(arrayData, arrayIndex) return invoker.call(0xD3F2FFEB8D836F52, arrayData, arrayIndex).str end,
	---  
	DATAARRAY_GET_VECTOR = function(arrayData, arrayIndex) return invoker.call(0x8D2064E5B64A628A, arrayData, arrayIndex).scr_vec3 end,
	---  
	DATAARRAY_GET_DICT = function(arrayData, arrayIndex) return invoker.call(0x8B5FADCC4E3A145F, arrayData, arrayIndex).int end,
	---  
	DATAARRAY_GET_COUNT = function(arrayData) return invoker.call(0x065DB281590CEA2D, arrayData).int end,
	---Types:  
	---1 = Boolean  
	---2 = Integer  
	---3 = Float  
	---4 = String  
	---5 = Vector3  
	---6 = Object  
	---7 = Array  
	DATAARRAY_GET_TYPE = function(arrayData, arrayIndex) return invoker.call(0x3A0014ADB172A3C5, arrayData, arrayIndex).int end,
}
DECORATOR={  
	DECOR_SET_TIME = function(entity, propertyName, timestamp) return invoker.call(0x95AED7B8E39ECAA4, entity, propertyName, timestamp).bool end,
	---This function sets metadata of type bool to specified entity.  
	---  
	DECOR_SET_BOOL = function(entity, propertyName, value) return invoker.call(0x6B1E8E2ED1335B71, entity, propertyName, value).bool end,
	---  
	DECOR_SET_FLOAT = function(entity, propertyName, value) return invoker.call(0x211AB1DD8D0F363A, entity, propertyName, value).bool end,
	---Sets property to int.  
	DECOR_SET_INT = function(entity, propertyName, value) return invoker.call(0x0CE3AA5E1CA19E10, entity, propertyName, value).bool end,
	---  
	DECOR_GET_BOOL = function(entity, propertyName) return invoker.call(0xDACE671663F2F5DB, entity, propertyName).bool end,
	---  
	DECOR_GET_FLOAT = function(entity, propertyName) return invoker.call(0x6524A2F114706F43, entity, propertyName).float end,
	---  
	DECOR_GET_INT = function(entity, propertyName) return invoker.call(0xA06C969B02A97298, entity, propertyName).int end,
	---Returns whether or not the specified property is set for the entity.  
	DECOR_EXIST_ON = function(entity, propertyName) return invoker.call(0x05661B80A8C9165F, entity, propertyName).bool end,
	---  
	DECOR_REMOVE = function(entity, propertyName) return invoker.call(0x00EE9F297C738720, entity, propertyName).bool end,
	---https://alloc8or.re/gta5/doc/enums/eDecorType.txt  
	DECOR_REGISTER = function(propertyName, type) invoker.call(0x9FD90732F56403CE, propertyName, type) end,
	---type: see DECOR_REGISTER  
	DECOR_IS_REGISTERED_AS_TYPE = function(propertyName, type) return invoker.call(0x4F14F9F870D6FBC8, propertyName, type).bool end,
	---Called after all decorator type initializations.  
	DECOR_REGISTER_LOCK = function() invoker.call(0xA9D14EEA259F9248) end,
}
DLC={
	ARE_ANY_CCS_PENDING = function() return invoker.call(0x241FCA5B1AA14F75).bool end,
	---Returns true if the given DLC pack is present.  
	IS_DLC_PRESENT = function(dlcHash) return invoker.call(0x812595A0644CE1DE, dlcHash).bool end,
	---This function is hard-coded to always return 1.  
	DLC_CHECK_CLOUD_DATA_CORRECT = function() return invoker.call(0xF2E07819EF1A5289).bool end,
	---This function is hard-coded to always return 0.  
	GET_EXTRACONTENT_CLOUD_RESULT = function() return invoker.call(0x9489659372A81585).int end,
	---This function is hard-coded to always return 1.  
	DLC_CHECK_COMPAT_PACK_CONFIGURATION = function() return invoker.call(0xA213B11DFF526300).bool end,
	---  
	GET_EVER_HAD_BAD_PACK_ORDER = function() return invoker.call(0x8D30F648014A92B5).bool end,
	---  
	GET_IS_LOADING_SCREEN_ACTIVE = function() return invoker.call(0x10D0A8F259E93EC9).bool end,
	---  
	GET_IS_INITIAL_LOADING_SCREEN_ACTIVE = function() return invoker.call(0xC4637A6D03C24CC3).bool end,
	---Sets the value of the specified variable to 0.  
	---Always returns true.  
	HAS_CLOUD_REQUESTS_FINISHED = function(p0, unused) return invoker.call(0x46E2B844905BC5F0, p0, unused).bool end,
	---Unloads GROUP_MAP (GTAO/MP) DLC data and loads GROUP_MAP_SP DLC. Neither are loaded by default, ON_ENTER_MP is a cognate to this function and loads MP DLC (and unloads SP DLC by extension).  
	---Works in singleplayer.  
	ON_ENTER_SP = function() invoker.call(0xD7C10C4A637992C9) end,
	---This loads the GTA:O dlc map parts (high end garages, apartments).  
	---Works in singleplayer.  
	---In order to use GTA:O heist IPL's you have to call this native with the following params: SET_INSTANCE_PRIORITY_MODE(1);  
	ON_ENTER_MP = function() invoker.call(0x0888C3502DBBEEF5) end,
	---
	ARE_USER_ENTITLEMENTS_UP_TO_DATE = function() return invoker.call(0xB42DBFF903BB270F).bool end,
	---  
	TRY_GET_USER_ENTITLEMENTS = function(entitlements) return invoker.call(0x140491FD99CE6F5D, entitlements).bool end,
	---  
	DECLARE_IN_MULTIPLAYER_THIS_FRAME = function() invoker.call(0xF3A281B1AA86DBA9) end,
}
ENTITY={  
	---Checks whether an entity exists in the game world.  
	DOES_ENTITY_EXIST = function(entity) return invoker.call(0x7239B21A38F536BA, entity).bool end,
	---  
	DOES_ENTITY_BELONG_TO_THIS_SCRIPT = function(entity, p1) return invoker.call(0xDDE6DF5AE89981D2, entity, p1).bool end,
	---  
	DOES_ENTITY_HAVE_DRAWABLE = function(entity) return invoker.call(0x060D6E96F8B8E48D, entity).bool end,
	---  
	DOES_ENTITY_HAVE_PHYSICS = function(entity) return invoker.call(0xDA95EA3317CC5064, entity).bool end,
	---  
	DOES_ENTITY_HAVE_SKELETON = function(entity) return invoker.call(0x764EB96874EFFDC1, entity).bool end,
	---  
	DOES_ENTITY_HAVE_ANIM_DIRECTOR = function(entity) return invoker.call(0x2158E81A6AF65EA9, entity).bool end,
	---P3 is always 3 as far as i cant tell  
	---  
	---Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json  
	HAS_ENTITY_ANIM_FINISHED = function(entity, animDict, animName, p3) return invoker.call(0x20B711662962B472, entity, animDict, animName, p3).bool end,
	---  
	HAS_ENTITY_BEEN_DAMAGED_BY_ANY_OBJECT = function(entity) return invoker.call(0x95EB9964FF5C5C65, entity).bool end,
	---  
	HAS_ENTITY_BEEN_DAMAGED_BY_ANY_PED = function(entity) return invoker.call(0x605F5A140F202491, entity).bool end,
	---  
	HAS_ENTITY_BEEN_DAMAGED_BY_ANY_VEHICLE = function(entity) return invoker.call(0xDFD5033FDBA0A9C8, entity).bool end,
	---Entity 1 = Victim  
	---Entity 2 = Attacker  
	---  
	---p2 seems to always be 1  
	HAS_ENTITY_BEEN_DAMAGED_BY_ENTITY = function(entity1, entity2, p2) return invoker.call(0xC86D67D52A707CF8, entity1, entity2, p2).bool end,
	---traceType is always 17 in the scripts.  
	---  
	---There is other codes used for traceType:  
	---19 - in jewelry_prep1a  
	---126 - in am_hunt_the_beast  
	---256 & 287 - in fm_mission_controller  
	HAS_ENTITY_CLEAR_LOS_TO_ENTITY = function(entity1, entity2, traceType) return invoker.call(0xFCDFF7B72D23A1AC, entity1, entity2, traceType).bool end,
	---  
	HAS_ENTITY_CLEAR_LOS_TO_ENTITY_ADJUST_FOR_COVER = function(entity1, entity2, traceType) return invoker.call(0x394BDE2A7BBA031E, entity1, entity2, traceType).bool end,
	---Has the entity1 got a clear line of sight to the other entity2 from the direction entity1 is facing.  
	---This is one of the most CPU demanding BOOL natives in the game; avoid calling this in things like nested for-loops  
	HAS_ENTITY_CLEAR_LOS_TO_ENTITY_IN_FRONT = function(entity1, entity2) return invoker.call(0x0267D00AF114F17A, entity1, entity2).bool end,
	---Called on tick.  
	---Tested with vehicles, returns true whenever the vehicle is touching any entity.  
	---  
	---Note: for vehicles, the wheels can touch the ground and it will still return false, but if the body of the vehicle touches the ground, it will return true.  
	HAS_ENTITY_COLLIDED_WITH_ANYTHING = function(entity) return invoker.call(0x8BAD02F0368D9E14, entity).bool end,
	---  
	_GET_LAST_ENTITY_HIT_BY_ENTITY = function(entity) return invoker.call(0xA75EE4F689B85391, entity).int end,
	---  
	GET_LAST_MATERIAL_HIT_BY_ENTITY = function(entity) return invoker.call(0x5C3D0A935F535C4C, entity).int end,
	---  
	GET_COLLISION_NORMAL_OF_LAST_HIT_FOR_ENTITY = function(entity) return invoker.call(0xE465D4AB7CA6AE72, entity).scr_vec3 end,
	---Based on carmod_shop script decompile this takes a vehicle parameter. It is called when repair is done on initial enter.  
	FORCE_ENTITY_AI_AND_ANIMATION_UPDATE = function(entity) invoker.call(0x40FDEDB72F8293B2, entity) end,
	---Returns a float value representing animation's current playtime with respect to its total playtime. This value increasing in a range from [0 to 1] and wrap back to 0 when it reach 1.  
	---  
	---Example:  
	---0.000000 - mark the starting of animation.  
	---0.500000 - mark the midpoint of the animation.  
	---1.000000 - mark the end of animation.  
	---  
	---Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json  
	GET_ENTITY_ANIM_CURRENT_TIME = function(entity, animDict, animName) return invoker.call(0x346D81500D088F42, entity, animDict, animName).float end,
	---Returns a float value representing animation's total playtime in milliseconds.  
	---  
	---Example:  
	---GET_ENTITY_ANIM_TOTAL_TIME(PLAYER_ID(),"amb@world_human_yoga@female@base","base_b")   
	---return 20800.000000  
	---  
	---Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json  
	GET_ENTITY_ANIM_TOTAL_TIME = function(entity, animDict, animName) return invoker.call(0x50BD2730B191E360, entity, animDict, animName).float end,
	---Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json  
	GET_ANIM_DURATION = function(animDict, animName) return invoker.call(0xFEDDF04D62B8D790, animDict, animName).float end,
	---  
	GET_ENTITY_ATTACHED_TO = function(entity) return invoker.call(0x48C2BED9180FE123, entity).int end,
	---Gets the current coordinates for a specified entity.  
	---`entity` = The entity to get the coordinates from.  
	---`alive` = Unused by the game, potentially used by debug builds of GTA in order to assert whether or not an entity was alive.  
	GET_ENTITY_COORDS = function(entity, alive) return invoker.call(0x3FEF770D40960D5A, entity, alive).scr_vec3 end,
	---Gets the entity's forward vector.  
	GET_ENTITY_FORWARD_VECTOR = function(entity) return invoker.call(0x0A794A5A57F8DF91, entity).scr_vec3 end,
	---Gets the X-component of the entity's forward vector.  
	GET_ENTITY_FORWARD_X = function(entity) return invoker.call(0x8BB4EF4214E0E6D5, entity).float end,
	---Gets the Y-component of the entity's forward vector.  
	GET_ENTITY_FORWARD_Y = function(entity) return invoker.call(0x866A4A5FAE349510, entity).float end,
	---Returns the heading of the entity in degrees. Also know as the "Yaw" of an entity.  
	GET_ENTITY_HEADING = function(entity) return invoker.call(0xE83D4F9BA2A38914, entity).float end,
	---Gets the heading of the entity physics in degrees, which tends to be more accurate than just "GET_ENTITY_HEADING". This can be clearly seen while, for example, ragdolling a ped/player.  
	---  
	---NOTE: The name and description of this native are based on independent research. If you find this native to be more suitable under a different name and/or described differently, please feel free to do so.  
	GET_ENTITY_HEADING_FROM_EULERS = function(entity) return invoker.call(0x846BF6291198A71E, entity).float end,
	---Returns an integer value of entity's current health.  
	---  
	---Example of range for ped:  
	---- Player [0 to 200]  
	---- Ped [100 to 200]  
	---- Vehicle [0 to 1000]  
	---- Object [0 to 1000]  
	---  
	---Health is actually a float value but this native casts it to int.  
	---In order to get the actual value, do:  
	---float health = *(float *)(entityAddress + 0x280);  
	GET_ENTITY_HEALTH = function(entity) return invoker.call(0xEEF059FAD016D209, entity).int end,
	---Return an integer value of entity's maximum health.  
	---  
	---Example:  
	---- Player = 200  
	---- Ped = 150  
	GET_ENTITY_MAX_HEALTH = function(entity) return invoker.call(0x15D757606D170C3C, entity).int end,
	---For instance: ENTITY::SET_ENTITY_MAX_HEALTH(PLAYER::PLAYER_PED_ID(), 200); // director_mode.c4: 67849  
	SET_ENTITY_MAX_HEALTH = function(entity, value) invoker.call(0x166E7CF68597D8B5, entity, value) end,
	---  
	GET_ENTITY_HEIGHT = function(entity, X, Y, Z, atTop, inWorldCoords) return invoker.call(0x5A504562485944DD, entity, X, Y, Z, atTop, inWorldCoords).float end,
	---Return height (z-dimension) above ground.   
	---Example: The pilot in a titan plane is 1.844176 above ground.  
	---  
	---How can i convert it to meters?  
	---Everything seems to be in meters, probably this too.  
	GET_ENTITY_HEIGHT_ABOVE_GROUND = function(entity) return invoker.call(0x1DD55701034110E5, entity).float end,
	---  
	GET_ENTITY_MATRIX = function(entity, forwardVector, rightVector, upVector, position) invoker.call(0xECB2FC7235A7D137, entity, forwardVector, rightVector, upVector, position) end,
	---Returns the model hash from the entity  
	GET_ENTITY_MODEL = function(entity) return invoker.call(0x9F47B058362C84B5, entity).int end,
	---Converts world coords (posX - Z) to coords relative to the entity  
	---  
	---Example:  
	---posX is given as 50  
	---entity's x coord is 40  
	---the returned x coord will then be 10 or -10, not sure haven't used this in a while (think it is 10 though).  
	GET_OFFSET_FROM_ENTITY_GIVEN_WORLD_COORDS = function(entity, posX, posY, posZ) return invoker.call(0x2274BC1C4885E333, entity, posX, posY, posZ).scr_vec3 end,
	---Offset values are relative to the entity.  
	---  
	---x = left/right  
	---y = forward/backward  
	---z = up/down  
	GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS = function(entity, offsetX, offsetY, offsetZ) return invoker.call(0x1899F328B0E12848, entity, offsetX, offsetY, offsetZ).scr_vec3 end,
	---  
	GET_ENTITY_PITCH = function(entity) return invoker.call(0xD45DC2893621E1FE, entity).float end,
	---w is the correct parameter name!  
	GET_ENTITY_QUATERNION = function(entity, x, y, z, w) invoker.call(0x7B3703D2D32DFA18, entity, x, y, z, w) end,
	---Displays the current ROLL axis of the entity [-180.0000/180.0000+]  
	---(Sideways Roll) such as a vehicle tipped on its side  
	GET_ENTITY_ROLL = function(entity) return invoker.call(0x831E0242595560DF, entity).float end,
	---rotationOrder is the order yaw, pitch and roll is applied. Usually 2. Returns a vector where the Z coordinate is the yaw.  
	---  
	---rotationOrder refers to the order yaw pitch roll is applied; value ranges from 0 to 5 and is usually *2* in scripts.  
	---What you use for rotationOrder when getting must be the same as rotationOrder when setting the rotation.  
	---  
	---What it returns is the yaw on the z part of the vector, which makes sense considering R* considers z as vertical. Here's a picture for those of you who don't understand pitch, yaw, and roll: www.allstar.fiu.edu/aero/images/pic5-1.gif  
	---  
	---Rotation Orders:  
	---0: ZYX - Rotate around the z-axis, then the y-axis and finally the x-axis.  
	---1: YZX - Rotate around the y-axis, then the z-axis and finally the x-axis.  
	---2: ZXY - Rotate around the z-axis, then the x-axis and finally the y-axis.  
	---3: XZY - Rotate around the x-axis, then the z-axis and finally the y-axis.  
	---4: YXZ - Rotate around the y-axis, then the x-axis and finally the z-axis.  
	---5: XYZ - Rotate around the x-axis, then the y-axis and finally the z-axis.  
	GET_ENTITY_ROTATION = function(entity, rotationOrder) return invoker.call(0xAFBD61CC738D9EB9, entity, rotationOrder).scr_vec3 end,
	---  
	GET_ENTITY_ROTATION_VELOCITY = function(entity) return invoker.call(0x213B91045D09B983, entity).scr_vec3 end,
	---Returns the name of the script that owns/created the entity or nullptr. Second parameter is unused, can just be a nullptr.  
	GET_ENTITY_SCRIPT = function(entity, script) return invoker.call(0xA6E9C38DB51D7748, entity, script).str end,
	---result is in meters per second  
	---  
	---------------------------------------------------------------  
	---So would the conversion to mph and km/h, be along the lines of this.  
	---  
	---float speed = GET_ENTITY_SPEED(veh);  
	---float kmh = (speed * 3.6);  
	---float mph = (speed * 2.236936);  
	---------------------------------------------------------------  
	GET_ENTITY_SPEED = function(entity) return invoker.call(0xD5037BA82E12416F, entity).float end,
	---Relative can be used for getting speed relative to the frame of the vehicle, to determine for example, if you are going in reverse (-y speed) or not (+y speed).   
	GET_ENTITY_SPEED_VECTOR = function(entity, relative) return invoker.call(0x9A8D700A51CB7B0D, entity, relative).scr_vec3 end,
	---  
	GET_ENTITY_UPRIGHT_VALUE = function(entity) return invoker.call(0x95EED5A694951F9F, entity).float end,
	---  
	GET_ENTITY_VELOCITY = function(entity) return invoker.call(0x4805D2B1D8CF94A9, entity).scr_vec3 end,
	---Simply returns whatever is passed to it (Regardless of whether the handle is valid or not).  
	GET_OBJECT_INDEX_FROM_ENTITY_INDEX = function(entity) return invoker.call(0xD7E3B9735C0F89D6, entity).int end,
	---Simply returns whatever is passed to it (Regardless of whether the handle is valid or not).  
	GET_PED_INDEX_FROM_ENTITY_INDEX = function(entity) return invoker.call(0x04A2A40C73395041, entity).int end,
	---Simply returns whatever is passed to it (Regardless of whether the handle is valid or not).  
	GET_VEHICLE_INDEX_FROM_ENTITY_INDEX = function(entity) return invoker.call(0x4B53F92932ADFAC0, entity).int end,
	---Returns the coordinates of an entity-bone.  
	GET_WORLD_POSITION_OF_ENTITY_BONE = function(entity, boneIndex) return invoker.call(0x44A8FCB8ED227738, entity, boneIndex).scr_vec3 end,
	---  
	GET_NEAREST_PLAYER_TO_ENTITY = function(entity) return invoker.call(0x7196842CB375CDB3, entity).int end,
	---  
	GET_NEAREST_PLAYER_TO_ENTITY_ON_TEAM = function(entity, team) return invoker.call(0x4DC9A62F844D9337, entity, team).int end,
	---  
	GET_NEAREST_PARTICIPANT_TO_ENTITY = function(entity) return invoker.call(0xFFBD7052D65BE0FF, entity).int end,
	---Returns:  
	---0 = no entity  
	---1 = ped  
	---2 = vehicle  
	---3 = object  
	GET_ENTITY_TYPE = function(entity) return invoker.call(0x8ACD366038D14505, entity).int end,
	---A population type, from the following enum: https://alloc8or.re/gta5/doc/enums/ePopulationType.txt  
	GET_ENTITY_POPULATION_TYPE = function(entity) return invoker.call(0xF6F5161F4534EDFF, entity).int end,
	---  
	IS_AN_ENTITY = function(handle) return invoker.call(0x731EC8A916BD11A1, handle).bool end,
	---  
	IS_ENTITY_A_PED = function(entity) return invoker.call(0x524AC5ECEA15343E, entity).bool end,
	---  
	IS_ENTITY_A_MISSION_ENTITY = function(entity) return invoker.call(0x0A7B270912999B3C, entity).bool end,
	---  
	IS_ENTITY_A_VEHICLE = function(entity) return invoker.call(0x6AC7003FA6E5575E, entity).bool end,
	---  
	IS_ENTITY_AN_OBJECT = function(entity) return invoker.call(0x8D68C8FD0FACA94E, entity).bool end,
	---Checks if entity is within x/y/zSize distance of x/y/z.   
	---  
	---Last three are unknown ints, almost always p7 = 0, p8 = 1, p9 = 0  
	IS_ENTITY_AT_COORD = function(entity, xPos, yPos, zPos, xSize, ySize, zSize, p7, p8, p9) return invoker.call(0x20B60995556D004F, entity, xPos, yPos, zPos, xSize, ySize, zSize, p7, p8, p9).bool end,
	---Checks if entity1 is within the box defined by x/y/zSize of entity2.  
	---  
	---Last three parameters are almost alwasy p5 = 0, p6 = 1, p7 = 0  
	IS_ENTITY_AT_ENTITY = function(entity1, entity2, xSize, ySize, zSize, p5, p6, p7) return invoker.call(0x751B70C3D034E187, entity1, entity2, xSize, ySize, zSize, p5, p6, p7).bool end,
	---Whether the entity is attached to any other entity.  
	IS_ENTITY_ATTACHED = function(entity) return invoker.call(0xB346476EF1A64897, entity).bool end,
	---  
	IS_ENTITY_ATTACHED_TO_ANY_OBJECT = function(entity) return invoker.call(0xCF511840CEEDE0CC, entity).bool end,
	---  
	IS_ENTITY_ATTACHED_TO_ANY_PED = function(entity) return invoker.call(0xB1632E9A5F988D11, entity).bool end,
	---  
	IS_ENTITY_ATTACHED_TO_ANY_VEHICLE = function(entity) return invoker.call(0x26AA915AD89BFB4B, entity).bool end,
	---  
	IS_ENTITY_ATTACHED_TO_ENTITY = function(from, to) return invoker.call(0xEFBE71898A993728, from, to).bool end,
	---  
	IS_ENTITY_DEAD = function(entity, p1) return invoker.call(0x5F9532F3B5CC2551, entity, p1).bool end,
	---  
	IS_ENTITY_IN_AIR = function(entity) return invoker.call(0x886E37EC497200B6, entity).bool end,
	---`p8` is a debug flag invoking functions in the same path as ``DRAW_MARKER``  
	---`p10` is some entity flag check, also used in `IS_ENTITY_AT_ENTITY`, `IS_ENTITY_IN_AREA`, and `IS_ENTITY_AT_COORD`.  
	---See IS_POINT_IN_ANGLED_AREA for the definition of an angled area.  
	IS_ENTITY_IN_ANGLED_AREA = function(entity, x1, y1, z1, x2, y2, z2, width, debug, includeZ, p10) return invoker.call(0x51210CED3DA1C78A, entity, x1, y1, z1, x2, y2, z2, width, debug, includeZ, p10).bool end,
	---  
	IS_ENTITY_IN_AREA = function(entity, x1, y1, z1, x2, y2, z2, p7, p8, p9) return invoker.call(0x54736AA40E271165, entity, x1, y1, z1, x2, y2, z2, p7, p8, p9).bool end,
	---Full list of zones by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/zones.json  
	IS_ENTITY_IN_ZONE = function(entity, zone) return invoker.call(0xB6463CF6AF527071, entity, zone).bool end,
	---  
	IS_ENTITY_IN_WATER = function(entity) return invoker.call(0xCFB0A0D8EDD145A3, entity).bool end,
	---Get how much of the entity is submerged.  1.0f is whole entity.  
	GET_ENTITY_SUBMERGED_LEVEL = function(entity) return invoker.call(0xE81AFC1BC4CC41CE, entity).float end,
	---  
	SET_ENTITY_REQUIRES_MORE_EXPENSIVE_RIVER_CHECK = function(entity, toggle) invoker.call(0x694E00132F2823ED, entity, toggle) end,
	---Returns true if the entity is in between the minimum and maximum values for the 2d screen coords.   
	---This means that it will return true even if the entity is behind a wall for example, as long as you're looking at their location.   
	---Chipping  
	IS_ENTITY_ON_SCREEN = function(entity) return invoker.call(0xE659E47AF827484B, entity).bool end,
	---See also PED::IS_SCRIPTED_SCENARIO_PED_USING_CONDITIONAL_ANIM 0x6EC47A344923E1ED 0x3C30B447  
	---  
	---Taken from ENTITY::IS_ENTITY_PLAYING_ANIM(PLAYER::PLAYER_PED_ID(), "creatures@shark@move", "attack_player", 3)  
	---  
	---p4 is always 3 in the scripts.  
	---  
	---Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json  
	IS_ENTITY_PLAYING_ANIM = function(entity, animDict, animName, taskFlag) return invoker.call(0x1F0B79228E461EC9, entity, animDict, animName, taskFlag).bool end,
	---a static ped will not react to natives like "APPLY_FORCE_TO_ENTITY" or "SET_ENTITY_VELOCITY" and oftentimes will not react to task-natives like "TASK::TASK_COMBAT_PED". The only way I know of to make one of these peds react is to ragdoll them (or sometimes to use CLEAR_PED_TASKS_IMMEDIATELY(). Static peds include almost all far-away peds, beach-combers, peds in certain scenarios, peds crossing a crosswalk, peds walking to get back into their cars, and others. If anyone knows how to make a ped non-static without ragdolling them, please edit this with the solution.  
	IS_ENTITY_STATIC = function(entity) return invoker.call(0x1218E6886D3D8327, entity).bool end,
	---  
	IS_ENTITY_TOUCHING_ENTITY = function(entity, targetEntity) return invoker.call(0x17FFC1B2BA35A494, entity, targetEntity).bool end,
	---  
	IS_ENTITY_TOUCHING_MODEL = function(entity, modelHash) return invoker.call(0x0F42323798A58C8C, entity, modelHash).bool end,
	---  
	IS_ENTITY_UPRIGHT = function(entity, angle) return invoker.call(0x5333F526F6AB19AA, entity, angle).bool end,
	---  
	IS_ENTITY_UPSIDEDOWN = function(entity) return invoker.call(0x1DBD58820FA61D71, entity).bool end,
	---  
	IS_ENTITY_VISIBLE = function(entity) return invoker.call(0x47D6F43D77935C75, entity).bool end,
	---  
	IS_ENTITY_VISIBLE_TO_SCRIPT = function(entity) return invoker.call(0xD796CB5BA8F20E32, entity).bool end,
	---  
	IS_ENTITY_OCCLUDED = function(entity) return invoker.call(0xE31C2C72B8692B64, entity).bool end,
	---  
	WOULD_ENTITY_BE_OCCLUDED = function(entityModelHash, x, y, z, p4) return invoker.call(0xEE5D2A122E09EC42, entityModelHash, x, y, z, p4).bool end,
	---  
	IS_ENTITY_WAITING_FOR_WORLD_COLLISION = function(entity) return invoker.call(0xD05BFF0C0A12C68F, entity).bool end,
	---Applies a force to the specified entity.  
	---  
	---**List of force types (p1)**:  
	---public enum ForceType  
	---{  
	---    MinForce = 0,  
	---    MaxForceRot = 1,  
	---    MinForce2 = 2,  
	---    MaxForceRot2 = 3,  
	---    ForceNoRot = 4,  
	---    ForceRotPlusForce = 5  
	---}  
	---Research/documentation on the gtaforums can be found here https://gtaforums.com/topic/885669-precisely-define-object-physics/) and here https://gtaforums.com/topic/887362-apply-forces-and-momentums-to-entityobject/.  
	---  
	---p6/relative - makes the xyz force not relative to world coords, but to something else  
	---p7/highForce - setting false will make the force really low  
	APPLY_FORCE_TO_ENTITY_CENTER_OF_MASS = function(entity, forceType, x, y, z, p5, isDirectionRel, isForceRel, p8) invoker.call(0x18FF00FC7EFF559E, entity, forceType, x, y, z, p5, isDirectionRel, isForceRel, p8) end,
	---Documented here:  
	---gtaforums.com/topic/885669-precisely-define-object-physics/  
	---gtaforums.com/topic/887362-apply-forces-and-momentums-to-entityobject/  
	---  
	---forceFlags:  
	---First bit (lowest): Strong force flag, factor 100  
	---Second bit: Unkown flag  
	---Third bit: Momentum flag=1 (vector (x,y,z) is a momentum, more research needed)  
	---If higher bits are unequal 0 the function doesn't applay any forces at all.  
	---(As integer possible values are 0-7)  
	---  
	---0: weak force  
	---1: strong force  
	---2: same as 0 (2nd bit?)  
	---3: same as 1  
	---4: weak momentum  
	---5: strong momentum  
	---6: same as 4  
	---7: same as 5  
	---  
	---isLocal: vector defined in local (body-fixed) coordinate frame  
	---isMassRel: if true the force gets multiplied with the objects mass (this is why it was known as highForce) and different objects will have the same acceleration.  
	---  
	---p8 !!! Whenever I set this !=0, my script stopped.  
	APPLY_FORCE_TO_ENTITY = function(entity, forceFlags, x, y, z, offX, offY, offZ, boneIndex, isDirectionRel, ignoreUpVec, isForceRel, p12, p13) invoker.call(0xC5F68BE9613E2D18, entity, forceFlags, x, y, z, offX, offY, offZ, boneIndex, isDirectionRel, ignoreUpVec, isForceRel, p12, p13) end,
	---Attaches entity1 to bone (boneIndex) of entity2.  
	---  
	---boneIndex - this is different to boneID, use GET_PED_BONE_INDEX to get the index from the ID. use the index for attaching to specific bones. entity1 will be attached to entity2's centre if bone index given doesn't correspond to bone indexes for that entity type.  
	---  
	---useSoftPinning - if set to false attached entity will not detach when fixed  
	---collision - controls collision between the two entities (FALSE disables collision).  
	---isPed - pitch doesnt work when false and roll will only work on negative numbers (only peds)  
	---vertexIndex - position of vertex  
	---fixedRot - if false it ignores entity vector   
	---  
	ATTACH_ENTITY_TO_ENTITY = function(entity1, entity2, boneIndex, xPos, yPos, zPos, xRot, yRot, zRot, p9, useSoftPinning, collision, isPed, vertexIndex, fixedRot, p15) invoker.call(0x6B9BBD38AB0796DF, entity1, entity2, boneIndex, xPos, yPos, zPos, xRot, yRot, zRot, p9, useSoftPinning, collision, isPed, vertexIndex, fixedRot, p15) end,
	---  
	ATTACH_ENTITY_BONE_TO_ENTITY_BONE = function(entity1, entity2, boneIndex1, boneIndex2, p4, p5) invoker.call(0x5C48B75732C8456C, entity1, entity2, boneIndex1, boneIndex2, p4, p5) end,
	---  
	ATTACH_ENTITY_BONE_TO_ENTITY_BONE_Y_FORWARD = function(entity1, entity2, boneIndex1, boneIndex2, p4, p5) invoker.call(0xFD1695C5D3B05439, entity1, entity2, boneIndex1, boneIndex2, p4, p5) end,
	---breakForce is the amount of force required to break the bond.  
	---p14 - is always 1 in scripts  
	---p15 - is 1 or 0 in scripts - unknoun what it does  
	---p16 - controls collision between the two entities (FALSE disables collision).  
	---p17 - do not teleport entity to be attached to the position of the bone Index of the target entity (if 1, entity will not be teleported to target bone)  
	---p18 - is always 2 in scripts.  
	---  
	---  
	ATTACH_ENTITY_TO_ENTITY_PHYSICALLY = function(entity1, entity2, boneIndex1, boneIndex2, xPos1, yPos1, zPos1, xPos2, yPos2, zPos2, xRot, yRot, zRot, breakForce, fixedRot, p15, collision, p17, p18) invoker.call(0xC3675780C92F90F9, entity1, entity2, boneIndex1, boneIndex2, xPos1, yPos1, zPos1, xPos2, yPos2, zPos2, xRot, yRot, zRot, breakForce, fixedRot, p15, collision, p17, p18) end,
	---  
	ATTACH_ENTITY_TO_ENTITY_PHYSICALLY_OVERRIDE_INVERSE_MASS = function(firstEntityIndex, secondEntityIndex, firstEntityBoneIndex, secondEntityBoneIndex, secondEntityOffsetX, secondEntityOffsetY, secondEntityOffsetZ, firstEntityOffsetX, firstEntityOffsetY, firstEntityOffsetZ, vecRotationX, vecRotationY, vecRotationZ, physicalStrength, constrainRotation, doInitialWarp, collideWithEntity, addInitialSeperation, rotOrder, invMassScaleA, invMassScaleB) invoker.call(0x168A09D1B25B0BA4, firstEntityIndex, secondEntityIndex, firstEntityBoneIndex, secondEntityBoneIndex, secondEntityOffsetX, secondEntityOffsetY, secondEntityOffsetZ, firstEntityOffsetX, firstEntityOffsetY, firstEntityOffsetZ, vecRotationX, vecRotationY, vecRotationZ, physicalStrength, constrainRotation, doInitialWarp, collideWithEntity, addInitialSeperation, rotOrder, invMassScaleA, invMassScaleB) end,
	---Called to update entity attachments.  
	PROCESS_ENTITY_ATTACHMENTS = function(entity) invoker.call(0xF4080490ADC51C6F, entity) end,
	---Returns the index of the bone. If the bone was not found, -1 will be returned.   
	---  
	---list:  
	---https://pastebin.com/D7JMnX1g  
	---  
	---BoneNames:  
	---  chassis,  
	---  windscreen,  
	---   seat_pside_r,  
	--- seat_dside_r,  
	--- bodyshell,  
	---    suspension_lm,  
	---    suspension_lr,  
	---    platelight,  
	---   attach_female,  
	---    attach_male,  
	---  bonnet,  
	---   boot,  
	--- chassis_dummy,  //Center of the dummy  
	--- chassis_Control,    //Not found yet  
	---   door_dside_f,   //Door left, front  
	---    door_dside_r,   //Door left, back  
	--- door_pside_f,   //Door right, front  
	---   door_pside_r,   //Door right, back  
	---    Gun_GripR,  
	---    windscreen_f,  
	--- platelight, //Position where the light above the numberplate is located  
	---   VFX_Emitter,  
	---  window_lf,  //Window left, front  
	---  window_lr,  //Window left, back  
	---   window_rf,  //Window right, front  
	--- window_rr,  //Window right, back  
	---  engine, //Position of the engine  
	---  gun_ammo,  
	--- ROPE_ATTATCH,   //Not misspelled. In script "finale_heist2b.c4".  
	---    wheel_lf,   //Wheel left, front  
	---   wheel_lr,   //Wheel left, back  
	---    wheel_rf,   //Wheel right, front  
	---  wheel_rr,   //Wheel right, back  
	---   exhaust,    //Exhaust. shows only the position of the stock-exhaust  
	---   overheat,   //A position on the engine(not exactly sure, how to name it)  
	---  misc_e, //Not a car-bone.  
	--- seat_dside_f,   //Driver-seat  
	--- seat_pside_f,   //Seat next to driver  
	--- Gun_Nuzzle,  
	---   seat_r  
	---  
	---I doubt that the function is case-sensitive, since I found a "Chassis" and a "chassis". - Just tested: Definitely not case-sensitive.  
	---  
	---  
	GET_ENTITY_BONE_INDEX_BY_NAME = function(entity, boneName) return invoker.call(0xFB71170B7E76ACBA, entity, boneName).int end,
	---  
	CLEAR_ENTITY_LAST_DAMAGE_ENTITY = function(entity) invoker.call(0xA72CD9CA74A5ECBA, entity) end,
	---Deletes the specified entity, then sets the handle pointed to by the pointer to NULL.  
	DELETE_ENTITY = function(entity) invoker.call(0xAE3CBE5BF394C9C9, entity) end,
	---If `collision` is set to true, both entities won't collide with the other until the distance between them is above 4 meters.  
	---Set `dynamic` to true to keep velocity after dettaching  
	DETACH_ENTITY = function(entity, dynamic, collision) invoker.call(0x961AC54BF0613F5D, entity, dynamic, collision) end,
	---Freezes or unfreezes an entity preventing its coordinates to change by the player if set to `true`. You can still change the entity position using SET_ENTITY_COORDS.  
	FREEZE_ENTITY_POSITION = function(entity, toggle) invoker.call(0x428CA6DBD1094446, entity, toggle) end,
	---True means it can be deleted by the engine when switching lobbies/missions/etc, false means the script is expected to clean it up.  
	---  
	---"Allow Freeze If No Collision"  
	SET_ENTITY_SHOULD_FREEZE_WAITING_ON_COLLISION = function(entity, toggle) invoker.call(0x3910051CCECDB00C, entity, toggle) end,
	---delta and bitset are guessed fields. They are based on the fact that most of the calls have 0 or nil field types passed in.  
	---  
	---The only time bitset has a value is 0x4000 and the only time delta has a value is during stealth with usually <1.0f values.  
	---  
	---Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json  
	PLAY_ENTITY_ANIM = function(entity, animName, animDict, p3, loop, stayInAnim, p6, delta, bitset) return invoker.call(0x7FB218262B810701, entity, animName, animDict, p3, loop, stayInAnim, p6, delta, bitset).bool end,
	---p4 and p7 are usually 1000.0f.  
	---  
	---Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json  
	PLAY_SYNCHRONIZED_ENTITY_ANIM = function(entity, syncedScene, animation, propName, p4, p5, p6, p7) return invoker.call(0xC77720A12FE14A86, entity, syncedScene, animation, propName, p4, p5, p6, p7).bool end,
	---p6,p7 probably animname and animdict  
	---  
	---Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json  
	PLAY_SYNCHRONIZED_MAP_ENTITY_ANIM = function(x1, y1, z1, x2, y2, z2, p6, p7, p8, p9, p10, p11) return invoker.call(0xB9C54555ED30FBC4, x1, y1, z1, x2, y2, z2, p6, p7, p8, p9, p10, p11).bool end,
	---  
	STOP_SYNCHRONIZED_MAP_ENTITY_ANIM = function(x1, y1, z1, x2, y2, z2) return invoker.call(0x11E79CAB7183B6F5, x1, y1, z1, x2, y2, z2).bool end,
	---Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json  
	---  
	---RAGEPluginHook list: docs.ragepluginhook.net/html/62951c37-a440-478c-b389-c471230ddfc5.htm  
	STOP_ENTITY_ANIM = function(entity, animation, animGroup, p3) return invoker.call(0x28004F88151E03E0, entity, animation, animGroup, p3).bool end,
	---  
	STOP_SYNCHRONIZED_ENTITY_ANIM = function(entity, p1, p2) return invoker.call(0x43D3807C077261E3, entity, p1, p2).bool end,
	---if (ENTITY::HAS_ANIM_EVENT_FIRED(PLAYER::PLAYER_PED_ID(), MISC::GET_HASH_KEY("CreateObject")))  
	HAS_ANIM_EVENT_FIRED = function(entity, actionHash) return invoker.call(0xEAF4CD9EA3E7E922, entity, actionHash).bool end,
	---In the script "player_scene_t_bbfight.c4":  
	---"if (ENTITY::FIND_ANIM_EVENT_PHASE(&l_16E, &l_19F[v_4/*16*/], v_9, &v_A, &v_B))"  
	----- &l_16E (p0) is requested as an anim dictionary earlier in the script.  
	----- &l_19F[v_4/*16*/] (p1) is used in other natives in the script as the "animation" param.  
	----- v_9 (p2) is instantiated as "victim_fall"; I'm guessing that's another anim  
	-----v_A and v_B (p3 & p4) are both set as -1.0, but v_A is used immediately after this native for:   
	---"if (v_A < ENTITY::GET_ENTITY_ANIM_CURRENT_TIME(...))"  
	---Both v_A and v_B are seemingly used to contain both Vector3's and floats, so I can't say what either really is other than that they are both output parameters. p4 looks more like a *Vector3 though  
	---  
	---Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json  
	FIND_ANIM_EVENT_PHASE = function(animDictionary, animName, p2, p3, p4) return invoker.call(0x07F1BE2BCCAA27A7, animDictionary, animName, p2, p3, p4).bool end,
	---Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json  
	SET_ENTITY_ANIM_CURRENT_TIME = function(entity, animDictionary, animName, time) invoker.call(0x4487C259F0F70977, entity, animDictionary, animName, time) end,
	---Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json  
	SET_ENTITY_ANIM_SPEED = function(entity, animDictionary, animName, speedMultiplier) invoker.call(0x28D1A16553C51776, entity, animDictionary, animName, speedMultiplier) end,
	---Makes the specified entity (ped, vehicle or object) persistent. Persistent entities will not automatically be removed by the engine.  
	---  
	---p1 has no effect when either its on or off   
	---maybe a quick disassembly will tell us what it does  
	---  
	---p2 has no effect when either its on or off   
	---maybe a quick disassembly will tell us what it does  
	SET_ENTITY_AS_MISSION_ENTITY = function(entity, p1, p2) invoker.call(0xAD738C3085FE7E11, entity, p1, p2) end,
	---Marks the specified entity (ped, vehicle or object) as no longer needed if its population type is set to the mission type.  
	---If the entity is ped, it will also clear their tasks immediately just like when CLEAR_PED_TASKS_IMMEDIATELY is called.  
	---Entities marked as no longer needed, will be deleted as the engine sees fit.  
	---Use this if you just want to just let the game delete the ped:  
	---void MarkPedAsAmbientPed(Ped ped) {  
	---  auto addr = getScriptHandleBaseAddress(ped);  
	---  
	---  if (!addr) {  
	---    return;  
	---  }  
	---  
	---  //the game uses only lower 4 bits as entity population type   
	---  BYTE origValue = *(BYTE *)(addr + 0xDA);  
	---  *(BYTE *)(addr + 0xDA) = ((origValue & 0xF0) | ePopulationType::POPTYPE_RANDOM_AMBIENT);  
	---}  
	SET_ENTITY_AS_NO_LONGER_NEEDED = function(entity) invoker.call(0xB736A491E64A32CF, entity) end,
	---This is an alias of SET_ENTITY_AS_NO_LONGER_NEEDED.  
	SET_PED_AS_NO_LONGER_NEEDED = function(ped) invoker.call(0x2595DD4236549CE3, ped) end,
	---This is an alias of SET_ENTITY_AS_NO_LONGER_NEEDED.  
	SET_VEHICLE_AS_NO_LONGER_NEEDED = function(vehicle) invoker.call(0x629BFA74418D6239, vehicle) end,
	---This is an alias of SET_ENTITY_AS_NO_LONGER_NEEDED.  
	SET_OBJECT_AS_NO_LONGER_NEEDED = function(object) invoker.call(0x3AE22DEB5BA5A3E6, object) end,
	---  
	SET_ENTITY_CAN_BE_DAMAGED = function(entity, toggle) invoker.call(0x1760FFA8AB074D66, entity, toggle) end,
	---  
	GET_ENTITY_CAN_BE_DAMAGED = function(entity) return invoker.call(0xD95CC5D2AB15A09F, entity).bool end,
	---  
	SET_ENTITY_CAN_BE_DAMAGED_BY_RELATIONSHIP_GROUP = function(entity, bCanBeDamaged, relGroup) invoker.call(0xE22D8FDE858B8119, entity, bCanBeDamaged, relGroup) end,
	---  
	SET_ENTITY_CAN_ONLY_BE_DAMAGED_BY_SCRIPT_PARTICIPANTS = function(entity, toggle) invoker.call(0x352E2B5CF420BF3B, entity, toggle) end,
	---Sets whether the entity can be targeted without being in line-of-sight.  
	SET_ENTITY_CAN_BE_TARGETED_WITHOUT_LOS = function(entity, toggle) invoker.call(0xD3997889736FD899, entity, toggle) end,
	---  
	SET_ENTITY_COLLISION = function(entity, toggle, keepPhysics) invoker.call(0x1A9205C1B9EE827F, entity, toggle, keepPhysics) end,
	---  
	GET_ENTITY_COLLISION_DISABLED = function(entity) return invoker.call(0xCCF1E97BEFDAE480, entity).bool end,
	---  
	SET_ENTITY_COMPLETELY_DISABLE_COLLISION = function(entity, toggle, keepPhysics) invoker.call(0x9EBC85ED0FFFE51C, entity, toggle, keepPhysics) end,
	---p7 is always 1 in the scripts. Set to 1, an area around the destination coords for the moved entity is cleared from other entities.   
	---   
	---Often ends with 1, 0, 0, 1); in the scripts. It works.   
	---  
	---Axis - Invert Axis Flags  
	SET_ENTITY_COORDS = function(entity, xPos, yPos, zPos, xAxis, yAxis, zAxis, clearArea) invoker.call(0x06843DA7060A026B, entity, xPos, yPos, zPos, xAxis, yAxis, zAxis, clearArea) end,
	---  
	SET_ENTITY_COORDS_WITHOUT_PLANTS_RESET = function(entity, xPos, yPos, zPos, alive, deadFlag, ragdollFlag, clearArea) invoker.call(0x621873ECE1178967, entity, xPos, yPos, zPos, alive, deadFlag, ragdollFlag, clearArea) end,
	---Axis - Invert Axis Flags  
	SET_ENTITY_COORDS_NO_OFFSET = function(entity, xPos, yPos, zPos, xAxis, yAxis, zAxis) invoker.call(0x239A3351AC1DA385, entity, xPos, yPos, zPos, xAxis, yAxis, zAxis) end,
	---  
	SET_ENTITY_DYNAMIC = function(entity, toggle) invoker.call(0x1718DE8E3F2823CA, entity, toggle) end,
	---Set the heading of an entity in degrees also known as "Yaw".  
	SET_ENTITY_HEADING = function(entity, heading) invoker.call(0x8E2530AA8ADA980E, entity, heading) end,
	---health >= 0  
	---male ped ~= 100 - 200  
	---female ped ~= 0 - 100  
	SET_ENTITY_HEALTH = function(entity, health, instigator, weaponType) invoker.call(0x6B76DC1F3AE6E6A3, entity, health, instigator, weaponType) end,
	---Sets a ped or an object totally invincible. It doesn't take any kind of damage. Peds will not ragdoll on explosions and the tazer animation won't apply either.  
	---  
	---If you use this for a ped and you want Ragdoll to stay enabled, then do:  
	---*(DWORD *)(pedAddress + 0x188) |= (1 << 9);  
	---  
	---Use this if you want to get the invincibility status:  
	---  bool IsPedInvincible(Ped ped)  
	--- {  
	---     auto addr = getScriptHandleBaseAddress(ped);      
	---  
	---        if (addr)  
	---     {  
	---         DWORD flag = *(DWORD *)(addr + 0x188);  
	---            return ((flag & (1 << 8)) != 0) || ((flag & (1 << 9)) != 0);  
	---      }  
	---  
	---       return false;  
	--- }  
	SET_ENTITY_INVINCIBLE = function(entity, toggle, dontResetOnCleanup) invoker.call(0x3882114BDE571AD4, entity, toggle, dontResetOnCleanup) end,
	---  
	SET_ENTITY_IS_TARGET_PRIORITY = function(entity, p1, p2) invoker.call(0xEA02E132F5C68722, entity, p1, p2) end,
	---  
	SET_ENTITY_LIGHTS = function(entity, toggle) invoker.call(0x7CFBA6A80BDF3874, entity, toggle) end,
	---Loads collision grid for an entity spawned outside of a player's loaded area. This allows peds to execute tasks rather than sit dormant because of a lack of a physics grid.  
	---Certainly not the main usage of this native but when set to true for a Vehicle, it will prevent the vehicle to explode if it is spawned far away from the player.  
	SET_ENTITY_LOAD_COLLISION_FLAG = function(entity, toggle, p2) invoker.call(0x0DC7CABAB1E9B67E, entity, toggle, p2) end,
	---  
	HAS_COLLISION_LOADED_AROUND_ENTITY = function(entity) return invoker.call(0xE9676F61BC0B3321, entity).bool end,
	---  
	SET_ENTITY_MAX_SPEED = function(entity, speed) invoker.call(0x0E46A3FCBDE2A1B1, entity, speed) end,
	---  
	SET_ENTITY_ONLY_DAMAGED_BY_PLAYER = function(entity, toggle) invoker.call(0x79F020FF9EDC0748, entity, toggle) end,
	---  
	SET_ENTITY_ONLY_DAMAGED_BY_RELATIONSHIP_GROUP = function(entity, p1, p2) invoker.call(0x7022BD828FA0B082, entity, p1, p2) end,
	---Enable / disable each type of damage.  
	---  
	---waterProof is damage related to water not drowning  
	-----------------  
	---p7 is to to '1' in am_mp_property_ext/int: ENTITY::SET_ENTITY_PROOFS(uParam0->f_19, true, true, true, true, true, true, 1, true);  
	---  
	SET_ENTITY_PROOFS = function(entity, bulletProof, fireProof, explosionProof, collisionProof, meleeProof, steamProof, dontResetOnCleanup, waterProof) invoker.call(0xFAEE099C6F890BB8, entity, bulletProof, fireProof, explosionProof, collisionProof, meleeProof, steamProof, dontResetOnCleanup, waterProof) end,
	---  
	GET_ENTITY_PROOFS = function(entity, bulletProof, fireProof, explosionProof, collisionProof, meleeProof, steamProof, p7, drownProof) return invoker.call(0xBE8CD9BE829BBEBF, entity, bulletProof, fireProof, explosionProof, collisionProof, meleeProof, steamProof, p7, drownProof).bool end,
	---w is the correct parameter name!  
	SET_ENTITY_QUATERNION = function(entity, x, y, z, w) invoker.call(0x77B21BE7AC540F07, entity, x, y, z, w) end,
	---  
	SET_ENTITY_RECORDS_COLLISIONS = function(entity, toggle) invoker.call(0x0A50A1EEDAD01E65, entity, toggle) end,
	---rotationOrder refers to the order yaw pitch roll is applied  
	---value ranges from 0 to 5. What you use for rotationOrder when setting must be the same as rotationOrder when getting the rotation.   
	---Unsure what value corresponds to what rotation order, more testing will be needed for that.  
	---For the most part R* uses 1 or 2 as the order.  
	---p5 is usually set as true  
	---  
	SET_ENTITY_ROTATION = function(entity, pitch, roll, yaw, rotationOrder, p5) invoker.call(0x8524A8B0171D5E07, entity, pitch, roll, yaw, rotationOrder, p5) end,
	---p2 is always 0.  
	SET_ENTITY_VISIBLE = function(entity, toggle, p2) invoker.call(0xEA1C610A04DB6BBB, entity, toggle, p2) end,
	---  
	SET_ENTITY_WATER_REFLECTION_FLAG = function(entity, toggle) invoker.call(0xC34BC448DA29F5E9, entity, toggle) end,
	---  
	SET_ENTITY_MIRROR_REFLECTION_FLAG = function(entity, p1) invoker.call(0xE66377CDDADA4810, entity, p1) end,
	---Note that the third parameter(denoted as z) is "up and down" with positive numbers encouraging upwards movement.  
	SET_ENTITY_VELOCITY = function(entity, x, y, z) invoker.call(0x1C99BB7B6E96D16F, entity, x, y, z) end,
	---  
	SET_ENTITY_ANGULAR_VELOCITY = function(entity, x, y, z) invoker.call(0x8339643499D1222E, entity, x, y, z) end,
	---  
	SET_ENTITY_HAS_GRAVITY = function(entity, toggle) invoker.call(0x4A4722448F18EEF5, entity, toggle) end,
	---LOD distance can be 0 to 0xFFFF (higher values will result in 0xFFFF) as it is actually stored as a 16-bit value (aka uint16_t).  
	SET_ENTITY_LOD_DIST = function(entity, value) invoker.call(0x5927F96A78577363, entity, value) end,
	---Returns the LOD distance of an entity.  
	GET_ENTITY_LOD_DIST = function(entity) return invoker.call(0x4159C2762B5791D6, entity).int end,
	---skin - everything alpha except skin  
	---Set entity alpha level. Ranging from 0 to 255 but chnages occur after every 20 percent (after every 51).  
	SET_ENTITY_ALPHA = function(entity, alphaLevel, skin) invoker.call(0x44A0870B7E92D7C0, entity, alphaLevel, skin) end,
	---  
	GET_ENTITY_ALPHA = function(entity) return invoker.call(0x5A47B3B5E63E94C6, entity).int end,
	---  
	RESET_ENTITY_ALPHA = function(entity) invoker.call(0x9B1E824FFBB7027A, entity) end,
	---Similar to RESET_ENTITY_ALPHA  
	RESET_PICKUP_ENTITY_GLOW = function(entity) invoker.call(0x490861B88F4FD846, entity) end,
	---  
	SET_PICKUP_COLLIDES_WITH_PROJECTILES = function(p0, p1) invoker.call(0xCEA7C8E1B48FF68C, p0, p1) end,
	---Only called once in the scripts.  
	---  
	---Related to weapon objects.  
	---  
	SET_ENTITY_SORT_BIAS = function(entity, p1) invoker.call(0x5C3B791D580E0BC2, entity, p1) end,
	---  
	SET_ENTITY_ALWAYS_PRERENDER = function(entity, toggle) invoker.call(0xACAD101E1FB66689, entity, toggle) end,
	---  
	SET_ENTITY_RENDER_SCORCHED = function(entity, toggle) invoker.call(0x730F5F8D3F0F2050, entity, toggle) end,
	---Example here: www.gtaforums.com/topic/830463-help-with-turning-lights-green-and-causing-peds-to-crash-into-each-other/#entry1068211340  
	---  
	---0 = green  
	---1 = red  
	---2 = yellow  
	---3 = reset changes  
	---changing lights may not change the behavior of vehicles  
	SET_ENTITY_TRAFFICLIGHT_OVERRIDE = function(entity, state) invoker.call(0x57C5DB656185EAC4, entity, state) end,
	---  
	SET_ENTITY_IS_IN_VEHICLE = function(entity) invoker.call(0x78E8E3A640178255, entity) end,
	---Only works with objects!  
	CREATE_MODEL_SWAP = function(x, y, z, radius, originalModel, newModel, p6) invoker.call(0x92C47782FDA8B2A3, x, y, z, radius, originalModel, newModel, p6) end,
	---  
	REMOVE_MODEL_SWAP = function(x, y, z, radius, originalModel, newModel, p6) invoker.call(0x033C0F9A64E229AE, x, y, z, radius, originalModel, newModel, p6) end,
	---p5 = sets as true in scripts  
	---Same as the comment for CREATE_MODEL_SWAP unless for some reason p5 affects it this only works with objects as well.  
	---  
	---Network players do not see changes done with this.  
	CREATE_MODEL_HIDE = function(x, y, z, radius, modelHash, p5) invoker.call(0x8A97BCA30A0CE478, x, y, z, radius, modelHash, p5) end,
	---  
	CREATE_MODEL_HIDE_EXCLUDING_SCRIPT_OBJECTS = function(x, y, z, radius, modelHash, p5) invoker.call(0x3A52AE588830BF7F, x, y, z, radius, modelHash, p5) end,
	---This native makes entities visible that are hidden by the native CREATE_MODEL_HIDE.  
	---p5 should be false, true does nothing  
	REMOVE_MODEL_HIDE = function(x, y, z, radius, modelHash, p5) invoker.call(0xD9E3006FB3CBD765, x, y, z, radius, modelHash, p5) end,
	---  
	CREATE_FORCED_OBJECT = function(x, y, z, p3, modelHash, p5) invoker.call(0x150E808B375A385A, x, y, z, p3, modelHash, p5) end,
	---  
	REMOVE_FORCED_OBJECT = function(x, y, z, p3, modelHash) invoker.call(0x61B6775E83C0DB6F, x, y, z, p3, modelHash) end,
	---Calling this function disables collision between two entities.  
	---The importance of the order for entity1 and entity2 is unclear.  
	---The third parameter, `thisFrame`, decides whether the collision is to be disabled until it is turned back on, or if it's just this frame.  
	SET_ENTITY_NO_COLLISION_ENTITY = function(entity1, entity2, thisFrameOnly) invoker.call(0xA53ED5520C07654A, entity1, entity2, thisFrameOnly) end,
	---  
	_SET_ENTITY_NO_COLLISION_WITH_NETWORKED_ENTITY = function(entity1, entity2) invoker.call(0x0A27A7827347B3B1, entity1, entity2) end,
	---  
	SET_ENTITY_MOTION_BLUR = function(entity, toggle) invoker.call(0x295D82A8559F9150, entity, toggle) end,
	---p1 always false.  
	SET_CAN_AUTO_VAULT_ON_ENTITY = function(entity, toggle) invoker.call(0xE12ABE5E3A389A6C, entity, toggle) end,
	---p1 always false.  
	SET_CAN_CLIMB_ON_ENTITY = function(entity, toggle) invoker.call(0xA80AE305E0A3044F, entity, toggle) end,
	---Only called within 1 script for x360. 'fm_mission_controller' and it used on an object.   
	---  
	---Ran after these 2 natives,  
	---set_object_targettable(uParam0, 0);  
	---set_entity_invincible(uParam0, 1);  
	SET_WAIT_FOR_COLLISIONS_BEFORE_PROBE = function(entity, toggle) invoker.call(0xDC6F8601FAF2E893, entity, toggle) end,
	---  
	SET_ENTITY_NOWEAPONDECALS = function(entity, p1) invoker.call(0x2C2E3DC128F44309, entity, p1) end,
	---  
	SET_ENTITY_USE_MAX_DISTANCE_FOR_WATER_REFLECTION = function(entity, p1) invoker.call(0x1A092BB0C3808B96, entity, p1) end,
	---Gets the world rotation of the specified bone of the specified entity.  
	GET_ENTITY_BONE_ROTATION = function(entity, boneIndex) return invoker.call(0xCE6294A232D03786, entity, boneIndex).scr_vec3 end,
	---Gets the world position of the specified bone of the specified entity.  
	GET_ENTITY_BONE_POSTION = function(entity, boneIndex) return invoker.call(0x46F8696933A63C9B, entity, boneIndex).scr_vec3 end,
	---Gets the local rotation of the specified bone of the specified entity.  
	GET_ENTITY_BONE_OBJECT_ROTATION = function(entity, boneIndex) return invoker.call(0xBD8D32550E5CEBFE, entity, boneIndex).scr_vec3 end,
	---  
	GET_ENTITY_BONE_OBJECT_POSTION = function(entity, boneIndex) return invoker.call(0xCF1247CC86961FD6, entity, boneIndex).scr_vec3 end,
	---  
	GET_ENTITY_BONE_COUNT = function(entity) return invoker.call(0xB328DCC3A3AA401B, entity).int end,
	---  
	ENABLE_ENTITY_BULLET_COLLISION = function(entity) invoker.call(0x6CE177D014502E8A, entity) end,
	---  
	SET_ENTITY_CAN_ONLY_BE_DAMAGED_BY_ENTITY = function(entity1, entity2) invoker.call(0xB17BC6453F6CF5AC, entity1, entity2) end,
	---  
	SET_ENTITY_CANT_CAUSE_COLLISION_DAMAGED_ENTITY = function(entity1, entity2) invoker.call(0x68B562E124CC0AEF, entity1, entity2) end,
	---p1 is always set to 1  
	SET_ALLOW_MIGRATE_TO_SPECTATOR = function(entity, p1) invoker.call(0x36F32DE87082343E, entity, p1) end,
	---Gets the handle of an entity with a specific model hash attached to another entity, such as an object attached to a ped.  
	--- This native does not appear to have anything to do with pickups as in scripts it is used with objects.  
	---  
	---Example from fm_mission_controller_2020.c:  
	---  
	---iVar8 = ENTITY::GET_ENTITY_OF_TYPE_ATTACHED_TO_ENTITY(bParam0->f_9, joaat("p_cs_clipboard"));  
	GET_ENTITY_OF_TYPE_ATTACHED_TO_ENTITY = function(entity, modelHash) return invoker.call(0x1F922734E259BD26, entity, modelHash).int end,
	---  
	SET_PICK_UP_BY_CARGOBOB_DISABLED = function(entity, toggle) invoker.call(0xD7B80E7C3BEFC396, entity, toggle) end,
}
EVENT={
	SET_DECISION_MAKER = function(ped, name) invoker.call(0xB604A2942ADED0EE, ped, name) end,
	---eventType: https://alloc8or.re/gta5/doc/enums/eEventType.txt  
	CLEAR_DECISION_MAKER_EVENT_RESPONSE = function(name, eventType) invoker.call(0x4FC9381A7AEE8968, name, eventType) end,
	---eventType: https://alloc8or.re/gta5/doc/enums/eEventType.txt  
	---  
	---This is limited to 4 blocked events at a time.  
	BLOCK_DECISION_MAKER_EVENT = function(name, eventType) invoker.call(0xE42FCDFD0E4196F7, name, eventType) end,
	---eventType: https://alloc8or.re/gta5/doc/enums/eEventType.txt  
	UNBLOCK_DECISION_MAKER_EVENT = function(name, eventType) invoker.call(0xD7CD9CF34F2C99E8, name, eventType) end,
	---eventType: https://alloc8or.re/gta5/doc/enums/eEventType.txt  
	ADD_SHOCKING_EVENT_AT_POSITION = function(eventType, x, y, z, duration) return invoker.call(0xD9F8455409B525E9, eventType, x, y, z, duration).int end,
	---eventType: https://alloc8or.re/gta5/doc/enums/eEventType.txt  
	ADD_SHOCKING_EVENT_FOR_ENTITY = function(eventType, entity, duration) return invoker.call(0x7FD8F3BE76F89422, eventType, entity, duration).int end,
	---eventType: https://alloc8or.re/gta5/doc/enums/eEventType.txt  
	IS_SHOCKING_EVENT_IN_SPHERE = function(eventType, x, y, z, radius) return invoker.call(0x1374ABB7C15BAB92, eventType, x, y, z, radius).bool end,
	---  
	REMOVE_SHOCKING_EVENT = function(event) return invoker.call(0x2CDA538C44C6CCE5, event).bool end,
	---  
	REMOVE_ALL_SHOCKING_EVENTS = function(p0) invoker.call(0xEAABE8FDFA21274C, p0) end,
	---  
	REMOVE_SHOCKING_EVENT_SPAWN_BLOCKING_AREAS = function() invoker.call(0x340F1415B68AEADE) end,
	---  
	SUPPRESS_SHOCKING_EVENTS_NEXT_FRAME = function() invoker.call(0x2F9A292AD0A3BD89) end,
	---eventType: https://alloc8or.re/gta5/doc/enums/eEventType.txt  
	SUPPRESS_SHOCKING_EVENT_TYPE_NEXT_FRAME = function(eventType) invoker.call(0x3FD2EC8BF1F1CF30, eventType) end,
	---  
	SUPPRESS_AGITATION_EVENTS_NEXT_FRAME = function() invoker.call(0x5F3B7749C112D552) end,
}
FILES={
	---Character types:  
	---0 = Michael,   
	---1 = Franklin,   
	---2 = Trevor,   
	---3 = MPMale,   
	---4 = MPFemale  
	GET_NUM_TATTOO_SHOP_DLC_ITEMS = function(character) return invoker.call(0x278F76C3B0A8F109, character).int end,
	---Character types:  
	---0 = Michael,   
	---1 = Franklin,   
	---2 = Trevor,   
	---3 = MPMale,   
	---4 = MPFemale  
	---  
	---  
	---enum TattooZoneData  
	---{    
	---    ZONE_TORSO = 0,    
	---    ZONE_HEAD = 1,    
	---    ZONE_LEFT_ARM = 2,    
	---    ZONE_RIGHT_ARM = 3,    
	---    ZONE_LEFT_LEG = 4,    
	---    ZONE_RIGHT_LEG = 5,    
	---    ZONE_UNKNOWN = 6,  
	---    ZONE_NONE = 7,    
	---};  
	---struct outComponent  
	---{  
	---    // these vars are suffixed with 4 bytes of padding each.  
	---    uint unk;  
	---    int unk2;  
	---    uint tattooCollectionHash;  
	---    uint tattooNameHash;  
	---    int unk3;  
	---    TattooZoneData zoneId;  
	---    uint unk4;  
	---    uint unk5;  
	---    // maybe more, not sure exactly, decompiled scripts are very vague around this part.  
	---}  
	GET_TATTOO_SHOP_DLC_ITEM_DATA = function(characterType, decorationIndex, outComponent) return invoker.call(0xFF56381874F82086, characterType, decorationIndex, outComponent).bool end,
	---Returns some sort of index/offset for overlays/decorations.  
	---  
	---Character types:  
	---0 = Michael,   
	---1 = Franklin,   
	---2 = Trevor,   
	---3 = MPMale,   
	---4 = MPFemale  
	GET_TATTOO_SHOP_DLC_ITEM_INDEX = function(overlayHash, p1, character) return invoker.call(0x10144267DD22866C, overlayHash, p1, character).int end,
	---  
	INIT_SHOP_PED_COMPONENT = function(outComponent) invoker.call(0x1E8C308FD312C036, outComponent) end,
	---  
	INIT_SHOP_PED_PROP = function(outProp) invoker.call(0xEB0A2B758F7B850F, outProp) end,
	---  
	SETUP_SHOP_PED_APPAREL_QUERY = function(p0, p1, p2, p3) return invoker.call(0x50F457823CE6EB5F, p0, p1, p2, p3).int end,
	---character is 0 for Michael, 1 for Franklin, 2 for Trevor, 3 for freemode male, and 4 for freemode female.  
	---  
	---componentId is between 0 and 11 and corresponds to the usual component slots.  
	---  
	---p1 could be the outfit number; unsure.  
	---  
	---p2 is usually -1; unknown function.  
	---  
	---p3 appears to be for selecting between clothes and props; false is used with components/clothes, true is used with props.  
	---  
	---p4 is usually -1; unknown function.  
	---  
	---componentId is -1 when p3 is true in decompiled scripts.  
	SETUP_SHOP_PED_APPAREL_QUERY_TU = function(character, p1, p2, p3, p4, componentId) return invoker.call(0x9BDF59818B1E38C1, character, p1, p2, p3, p4, componentId).int end,
	---See https://git.io/JtcRf for example and structs.  
	GET_SHOP_PED_QUERY_COMPONENT = function(componentId, outComponent) invoker.call(0x249E310B2D920699, componentId, outComponent) end,
	---Returns some sort of index/offset for components.  
	---Needs _GET_NUM_PROPS_FROM_OUTFIT to be called with p3 = false and componentId with the drawable's component slot first, returns -1 otherwise.  
	GET_SHOP_PED_QUERY_COMPONENT_INDEX = function(componentHash) return invoker.call(0x96E2929292A4DB77, componentHash).int end,
	---More info here: https://gist.github.com/root-cause/3b80234367b0c856d60bf5cb4b826f86  
	GET_SHOP_PED_COMPONENT = function(componentHash, outComponent) invoker.call(0x74C0E2A57EC66760, componentHash, outComponent) end,
	---See https://git.io/JtcRf for example and structs.  
	GET_SHOP_PED_QUERY_PROP = function(componentId, outProp) invoker.call(0xDE44A00999B2837D, componentId, outProp) end,
	---Returns some sort of index/offset for props.  
	---Needs _GET_NUM_PROPS_FROM_OUTFIT to be called with p3 = true and componentId = -1 first, returns -1 otherwise.  
	GET_SHOP_PED_QUERY_PROP_INDEX = function(componentHash) return invoker.call(0x6CEBE002E58DEE97, componentHash).int end,
	---More info here: https://gist.github.com/root-cause/3b80234367b0c856d60bf5cb4b826f86  
	GET_SHOP_PED_PROP = function(componentHash, outProp) invoker.call(0x5D5CAFF661DDF6FC, componentHash, outProp) end,
	---  
	GET_HASH_NAME_FOR_COMPONENT = function(entity, componentId, drawableVariant, textureVariant) return invoker.call(0x0368B3A838070348, entity, componentId, drawableVariant, textureVariant).int end,
	---  
	GET_HASH_NAME_FOR_PROP = function(entity, componentId, propIndex, propTextureIndex) return invoker.call(0x5D6160275CAEC8DD, entity, componentId, propIndex, propTextureIndex).int end,
	---  
	GET_SHOP_PED_APPAREL_VARIANT_COMPONENT_COUNT = function(componentHash) return invoker.call(0xC17AD0E5752BECDA, componentHash).int end,
	---`propHash`: Ped helmet prop hash?  
	---This native returns 1 when the player helmet has a visor (there is another prop index for the same helmet with closed/opened visor variant) that can be toggled. 0 if there's no alternative version with a visor for this helmet prop.  
	GET_SHOP_PED_APPAREL_VARIANT_PROP_COUNT = function(propHash) return invoker.call(0xD40AAC51E8E4C663, propHash).int end,
	---  
	GET_VARIANT_COMPONENT = function(componentHash, variantComponentIndex, nameHash, enumValue, componentType) invoker.call(0x6E11F282F11863B6, componentHash, variantComponentIndex, nameHash, enumValue, componentType) end,
	---  
	GET_VARIANT_PROP = function(componentHash, variantPropIndex, nameHash, enumValue, anchorPoint) invoker.call(0xD81B7F27BC773E66, componentHash, variantPropIndex, nameHash, enumValue, anchorPoint) end,
	---Returns number of possible values of the forcedComponentIndex argument of GET_FORCED_COMPONENT.  
	GET_SHOP_PED_APPAREL_FORCED_COMPONENT_COUNT = function(componentHash) return invoker.call(0xC6B9DB42C04DD8C3, componentHash).int end,
	---Returns number of possible values of the forcedPropIndex argument of GET_FORCED_PROP.  
	GET_SHOP_PED_APPAREL_FORCED_PROP_COUNT = function(componentHash) return invoker.call(0x017568A8182D98A6, componentHash).int end,
	---  
	GET_FORCED_COMPONENT = function(componentHash, forcedComponentIndex, nameHash, enumValue, componentType) invoker.call(0x6C93ED8C2F74859B, componentHash, forcedComponentIndex, nameHash, enumValue, componentType) end,
	---  
	GET_FORCED_PROP = function(componentHash, forcedPropIndex, nameHash, enumValue, anchorPoint) invoker.call(0xE1CA84EBF72E691D, componentHash, forcedPropIndex, nameHash, enumValue, anchorPoint) end,
	---Full list of restriction tags by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/pedApparelRestrictionTags.json  
	---  
	---componentId/last parameter seems to be unused.  
	DOES_SHOP_PED_APPAREL_HAVE_RESTRICTION_TAG = function(componentHash, restrictionTagHash, componentId) return invoker.call(0x341DE7ED1D2A1BFD, componentHash, restrictionTagHash, componentId).bool end,
	---  
	DOES_CURRENT_PED_COMPONENT_HAVE_RESTRICTION_TAG = function(ped, componentId, restrictionTagHash) return invoker.call(0x7796B21B76221BC5, ped, componentId, restrictionTagHash).bool end,
	---  
	DOES_CURRENT_PED_PROP_HAVE_RESTRICTION_TAG = function(ped, componentId, restrictionTagHash) return invoker.call(0xD726BAB4554DA580, ped, componentId, restrictionTagHash).bool end,
	---characters  
	---  
	---0: Michael  
	---1: Franklin  
	---2: Trevor  
	---3: MPMale  
	---4: MPFemale  
	SETUP_SHOP_PED_OUTFIT_QUERY = function(character, p1) return invoker.call(0xF3FBE2D50A6A8C28, character, p1).int end,
	---outfitIndex: from 0 to SETUP_SHOP_PED_OUTFIT_QUERY(characterIndex, false) - 1.  
	---See https://git.io/JtcB8 for example and outfit struct.  
	GET_SHOP_PED_QUERY_OUTFIT = function(outfitIndex, outfit) invoker.call(0x6D793F03A631FE56, outfitIndex, outfit) end,
	---  
	GET_SHOP_PED_OUTFIT = function(p0, p1) invoker.call(0xB7952076E444979D, p0, p1) end,
	---  
	GET_SHOP_PED_OUTFIT_LOCATE = function(p0) return invoker.call(0x073CA26B079F956E, p0).int end,
	---See https://git.io/JtcBH for example and structs.  
	GET_SHOP_PED_OUTFIT_PROP_VARIANT = function(outfitHash, variantIndex, outPropVariant) return invoker.call(0xA9F9C2E0FDE11CBB, outfitHash, variantIndex, outPropVariant).bool end,
	---See https://git.io/JtcBH for example and structs.  
	GET_SHOP_PED_OUTFIT_COMPONENT_VARIANT = function(outfitHash, variantIndex, outComponentVariant) return invoker.call(0x19F2A026EDF0013F, outfitHash, variantIndex, outComponentVariant).bool end,
	---  
	GET_NUM_DLC_VEHICLES = function() return invoker.call(0xA7A866D21CD2329B).int end,
	---dlcVehicleIndex is 0 to GET_NUM_DLC_VEHICLS() - 1  
	GET_DLC_VEHICLE_MODEL = function(dlcVehicleIndex) return invoker.call(0xECC01B7C5763333C, dlcVehicleIndex).int end,
	---dlcVehicleIndex takes a number from 0 - GET_NUM_DLC_VEHICLES() - 1.  
	---outData is a struct of 3 8-byte items.  
	---The Second item in the struct *(Hash *)(outData + 1) is the vehicle hash.  
	GET_DLC_VEHICLE_DATA = function(dlcVehicleIndex, outData) return invoker.call(0x33468EDC08E371F6, dlcVehicleIndex, outData).bool end,
	---  
	GET_DLC_VEHICLE_FLAGS = function(dlcVehicleIndex) return invoker.call(0x5549EE11FA22FCF2, dlcVehicleIndex).int end,
	---Returns the total number of DLC weapons.  
	GET_NUM_DLC_WEAPONS = function() return invoker.call(0xEE47635F352DA367).int end,
	---Returns the total number of DLC weapons that are available in SP (availableInSP field in shop_weapon.meta).  
	GET_NUM_DLC_WEAPONS_SP = function() return invoker.call(0x4160B65AE085B5A9).int end,
	---  
	---dlcWeaponIndex takes a number from 0 - GET_NUM_DLC_WEAPONS() - 1.  
	---struct DlcWeaponData  
	---{  
	---int emptyCheck; //use DLC1::IS_CONTENT_ITEM_LOCKED on this  
	---int padding1;  
	---int weaponHash;  
	---int padding2;  
	---int unk;  
	---int padding3;  
	---int weaponCost;  
	---int padding4;  
	---int ammoCost;  
	---int padding5;  
	---int ammoType;  
	---int padding6;  
	---int defaultClipSize;  
	---int padding7;  
	---char nameLabel[64];  
	---char descLabel[64];  
	---char desc2Label[64]; // usually "the" + name  
	---char upperCaseNameLabel[64];  
	---};  
	GET_DLC_WEAPON_DATA = function(dlcWeaponIndex, outData) return invoker.call(0x79923CD21BECE14E, dlcWeaponIndex, outData).bool end,
	---Same as GET_DLC_WEAPON_DATA but only works for DLC weapons that are available in SP.  
	GET_DLC_WEAPON_DATA_SP = function(dlcWeaponIndex, outData) return invoker.call(0x310836EE7129BA33, dlcWeaponIndex, outData).bool end,
	---Returns the total number of DLC weapon components.  
	GET_NUM_DLC_WEAPON_COMPONENTS = function(dlcWeaponIndex) return invoker.call(0x405425358A7D61FE, dlcWeaponIndex).int end,
	---Returns the total number of DLC weapon components that are available in SP.  
	GET_NUM_DLC_WEAPON_COMPONENTS_SP = function(dlcWeaponIndex) return invoker.call(0xAD2A7A6DFF55841B, dlcWeaponIndex).int end,
	---p0 seems to be the weapon index  
	---p1 seems to be the weapon component index  
	---struct DlcComponentData{  
	---int attachBone;  
	---int padding1;  
	---int bActiveByDefault;  
	---int padding2;  
	---int unk;  
	---int padding3;  
	---int componentHash;  
	---int padding4;  
	---int unk2;  
	---int padding5;  
	---int componentCost;  
	---int padding6;  
	---char nameLabel[64];  
	---char descLabel[64];  
	---};  
	---  
	GET_DLC_WEAPON_COMPONENT_DATA = function(dlcWeaponIndex, dlcWeapCompIndex, ComponentDataPtr) return invoker.call(0x6CF598A2957C2BF8, dlcWeaponIndex, dlcWeapCompIndex, ComponentDataPtr).bool end,
	---Same as GET_DLC_WEAPON_COMPONENT_DATA but only works for DLC components that are available in SP.  
	GET_DLC_WEAPON_COMPONENT_DATA_SP = function(dlcWeaponIndex, dlcWeapCompIndex, ComponentDataPtr) return invoker.call(0x31D5E073B6F93CDC, dlcWeaponIndex, dlcWeapCompIndex, ComponentDataPtr).bool end,
	---  
	IS_CONTENT_ITEM_LOCKED = function(itemHash) return invoker.call(0xD4D7B033C3AA243C, itemHash).bool end,
	---  
	IS_DLC_VEHICLE_MOD = function(hash) return invoker.call(0x0564B9FF9631B82C, hash).bool end,
	---  
	GET_DLC_VEHICLE_MOD_LOCK_HASH = function(hash) return invoker.call(0xC098810437312FFF, hash).int end,
	---From fm_deathmatch_creator and fm_race_creator:  
	---  
	---FILES::REVERT_CONTENT_CHANGESET_GROUP_FOR_ALL(joaat("GROUP_MAP_SP"));  
	---FILES::EXECUTE_CONTENT_CHANGESET_GROUP_FOR_ALL(joaat("GROUP_MAP"));  
	EXECUTE_CONTENT_CHANGESET_GROUP_FOR_ALL = function(hash) invoker.call(0x6BEDF5769AC2DC07, hash) end,
	---From fm_deathmatch_creator and fm_race_creator:  
	---  
	---FILES::REVERT_CONTENT_CHANGESET_GROUP_FOR_ALL(joaat("GROUP_MAP_SP"));  
	---FILES::EXECUTE_CONTENT_CHANGESET_GROUP_FOR_ALL(joaat("GROUP_MAP"));  
	REVERT_CONTENT_CHANGESET_GROUP_FOR_ALL = function(hash) invoker.call(0x3C1978285B036B25, hash) end,
}
FIRE={
	---Starts a fire:  
	---  
	---xyz: Location of fire  
	---maxChildren: The max amount of times a fire can spread to other objects. Must be 25 or less, or the function will do nothing.  
	---isGasFire: Whether or not the fire is powered by gasoline.  
	START_SCRIPT_FIRE = function(X, Y, Z, maxChildren, isGasFire) return invoker.call(0x6B83617E04503888, X, Y, Z, maxChildren, isGasFire).int end,
	---  
	REMOVE_SCRIPT_FIRE = function(fireHandle) invoker.call(0x7FF548385680673F, fireHandle) end,
	---  
	START_ENTITY_FIRE = function(entity) return invoker.call(0xF6A9D9708F6F23DF, entity).int end,
	---  
	STOP_ENTITY_FIRE = function(entity) invoker.call(0x7F0DD2EBBB651AFF, entity) end,
	---  
	IS_ENTITY_ON_FIRE = function(entity) return invoker.call(0x28D3FED7190D3A0B, entity).bool end,
	---  
	GET_NUMBER_OF_FIRES_IN_RANGE = function(x, y, z, radius) return invoker.call(0x50CAD495A460B305, x, y, z, radius).int end,
	---  
	SET_FLAMMABILITY_MULTIPLIER = function(p0) invoker.call(0x8F390AC4155099BA, p0) end,
	---  
	STOP_FIRE_IN_RANGE = function(x, y, z, radius) invoker.call(0x056A8A219B8E829F, x, y, z, radius) end,
	---Returns TRUE if it found something. FALSE if not.  
	GET_CLOSEST_FIRE_POS = function(outPosition, x, y, z) return invoker.call(0x352A9F6BCF90081F, outPosition, x, y, z).bool end,
	---BOOL isAudible = If explosion makes a sound.  
	---BOOL isInvisible = If the explosion is invisible or not.  
	---  
	---explosionType: https://alloc8or.re/gta5/doc/enums/eExplosionTag.txt  
	ADD_EXPLOSION = function(x, y, z, explosionType, damageScale, isAudible, isInvisible, cameraShake, noDamage) invoker.call(0xE3AD2BDBAEE269AC, x, y, z, explosionType, damageScale, isAudible, isInvisible, cameraShake, noDamage) end,
	---isAudible: If explosion makes a sound.  
	---isInvisible: If the explosion is invisible or not.  
	---explosionType: See ADD_EXPLOSION.  
	ADD_OWNED_EXPLOSION = function(ped, x, y, z, explosionType, damageScale, isAudible, isInvisible, cameraShake) invoker.call(0x172AA1B624FA1013, ped, x, y, z, explosionType, damageScale, isAudible, isInvisible, cameraShake) end,
	---isAudible: If explosion makes a sound.  
	---isInvisible: If the explosion is invisible or not.  
	---explosionType: See ADD_EXPLOSION.  
	ADD_EXPLOSION_WITH_USER_VFX = function(x, y, z, explosionType, explosionFx, damageScale, isAudible, isInvisible, cameraShake) invoker.call(0x36DD3FE58B5E5212, x, y, z, explosionType, explosionFx, damageScale, isAudible, isInvisible, cameraShake) end,
	---explosionType: See ADD_EXPLOSION.  
	IS_EXPLOSION_IN_AREA = function(explosionType, x1, y1, z1, x2, y2, z2) return invoker.call(0x2E2EBA0EE7CED0E0, explosionType, x1, y1, z1, x2, y2, z2).bool end,
	---explosionType: See ADD_EXPLOSION.  
	IS_EXPLOSION_ACTIVE_IN_AREA = function(explosionType, x1, y1, z1, x2, y2, z2) return invoker.call(0x6070104B699B2EF4, explosionType, x1, y1, z1, x2, y2, z2).bool end,
	---explosionType: See ADD_EXPLOSION.  
	IS_EXPLOSION_IN_SPHERE = function(explosionType, x, y, z, radius) return invoker.call(0xAB0F816885B0E483, explosionType, x, y, z, radius).bool end,
	---explosionType: See ADD_EXPLOSION.  
	GET_OWNER_OF_EXPLOSION_IN_SPHERE = function(explosionType, x, y, z, radius) return invoker.call(0xB3CD51E3DB86F176, explosionType, x, y, z, radius).int end,
	---explosionType: See ADD_EXPLOSION, -1 for any explosion type  
	---  
	IS_EXPLOSION_IN_ANGLED_AREA = function(explosionType, x1, y1, z1, x2, y2, z2, width) return invoker.call(0xA079A6C51525DC4B, explosionType, x1, y1, z1, x2, y2, z2, width).bool end,
	---Returns a handle to the first entity within the a circle spawned inside the 2 points from a radius.  
	---  
	---explosionType: See ADD_EXPLOSION.  
	GET_OWNER_OF_EXPLOSION_IN_ANGLED_AREA = function(explosionType, x1, y1, z1, x2, y2, z2, radius) return invoker.call(0x14BA4BA137AF6CEC, explosionType, x1, y1, z1, x2, y2, z2, radius).int end,
	---
	_NETWORK_EXPECT_EXPLOSION_EVENTS_FOR_PLAYER = function(expect, player) invoker.call(0x5241DB47A8B8AD54, expect, player) end,
}
GRAPHICS={ 
	---NOTE: Debugging functions are not present in the retail version of the game.  
	SET_DEBUG_LINES_AND_SPHERES_DRAWING_ACTIVE = function(enabled) invoker.call(0x175B6BFC15CDD0C5, enabled) end,
	---  
	DRAW_DEBUG_LINE = function(x1, y1, z1, x2, y2, z2, r, g, b, alpha) invoker.call(0x7FDFADE676AA3CB0, x1, y1, z1, x2, y2, z2, r, g, b, alpha) end,
	---NOTE: Debugging functions are not present in the retail version of the game.  
	DRAW_DEBUG_LINE_WITH_TWO_COLOURS = function(x1, y1, z1, x2, y2, z2, r1, g1, b1, r2, g2, b2, alpha1, alpha2) invoker.call(0xD8B9A8AC5608FF94, x1, y1, z1, x2, y2, z2, r1, g1, b1, r2, g2, b2, alpha1, alpha2) end,
	---NOTE: Debugging functions are not present in the retail version of the game.  
	DRAW_DEBUG_SPHERE = function(x, y, z, radius, red, green, blue, alpha) invoker.call(0xAAD68E1AB39DA632, x, y, z, radius, red, green, blue, alpha) end,
	---  
	DRAW_DEBUG_BOX = function(x1, y1, z1, x2, y2, z2, r, g, b, alpha) invoker.call(0x083A2CA4F2E573BD, x1, y1, z1, x2, y2, z2, r, g, b, alpha) end,
	---NOTE: Debugging functions are not present in the retail version of the game.  
	DRAW_DEBUG_CROSS = function(x, y, z, size, red, green, blue, alpha) invoker.call(0x73B1189623049839, x, y, z, size, red, green, blue, alpha) end,
	---NOTE: Debugging functions are not present in the retail version of the game.  
	DRAW_DEBUG_TEXT = function(text, x, y, z, red, green, blue, alpha) invoker.call(0x3903E216620488E8, text, x, y, z, red, green, blue, alpha) end,
	---NOTE: Debugging functions are not present in the retail version of the game.  
	DRAW_DEBUG_TEXT_2D = function(text, x, y, z, red, green, blue, alpha) invoker.call(0xA3BB2E9555C05A8F, text, x, y, z, red, green, blue, alpha) end,
	---Draws a depth-tested line from one point to another.  
	-------------------  
	---x1, y1, z1 : Coordinates for the first point  
	---x2, y2, z2 : Coordinates for the second point  
	---r, g, b, alpha : Color with RGBA-Values  
	---I recommend using a predefined function to call this.  
	---[VB.NET]  
	---Public Sub DrawLine(from As Vector3, [to] As Vector3, col As Color)  
	---    [Function].Call(Hash.DRAW_LINE, from.X, from.Y, from.Z, [to].X, [to].Y, [to].Z, col.R, col.G, col.B, col.A)  
	---End Sub  
	---  
	---[C#]  
	---public void DrawLine(Vector3 from, Vector3 to, Color col)  
	---{  
	---    Function.Call(Hash.DRAW_LINE, from.X, from.Y, from.Z, to.X, to.Y, to.Z, col.R, col.G, col.B, col.A);  
	---}  
	DRAW_LINE = function(x1, y1, z1, x2, y2, z2, red, green, blue, alpha) invoker.call(0x6B7256074AE34680, x1, y1, z1, x2, y2, z2, red, green, blue, alpha) end,
	---x/y/z - Location of a vertex (in world coords), presumably.  
	-------------------  
	---x1, y1, z1     : Coordinates for the first point  
	---x2, y2, z2     : Coordinates for the second point  
	---x3, y3, z3     : Coordinates for the third point  
	---r, g, b, alpha : Color with RGBA-Values  
	---  
	---Keep in mind that only one side of the drawn triangle is visible: It's the side, in which the vector-product of the vectors heads to: (b-a)x(c-a) Or (b-a)x(c-b).  
	---But be aware: The function seems to work somehow differently. I have trouble having them drawn in rotated orientation. Try it yourself and if you somehow succeed, please edit this and post your solution.  
	---I recommend using a predefined function to call this.  
	---[VB.NET]  
	---Public Sub DrawPoly(a As Vector3, b As Vector3, c As Vector3, col As Color)  
	---    [Function].Call(Hash.DRAW_POLY, a.X, a.Y, a.Z, b.X, b.Y, b.Z, c.X, c.Y, c.Z, col.R, col.G, col.B, col.A)  
	---End Sub  
	---  
	---[C#]  
	---public void DrawPoly(Vector3 a, Vector3 b, Vector3 c, Color col)  
	---{  
	---    Function.Call(Hash.DRAW_POLY, a.X, a.Y, a.Z, b.X, b.Y, b.Z, c.X, c.Y, c.Z, col.R, col.G, col.B, col.A);  
	---}  
	---BTW: Intersecting triangles are not supported: They overlap in the order they were called.  
	DRAW_POLY = function(x1, y1, z1, x2, y2, z2, x3, y3, z3, red, green, blue, alpha) invoker.call(0xAC26716048436851, x1, y1, z1, x2, y2, z2, x3, y3, z3, red, green, blue, alpha) end,
	---Used for drawling Deadline trailing lights, see deadline.ytd  
	---  
	---p15 through p23 are values that appear to be related to illiumation, scaling, and rotation; more testing required.  
	---For UVW mapping (u,v,w parameters), reference your favourite internet resource for more details.  
	DRAW_TEXTURED_POLY = function(x1, y1, z1, x2, y2, z2, x3, y3, z3, red, green, blue, alpha, textureDict, textureName, u1, v1, w1, u2, v2, w2, u3, v3, w3) invoker.call(0x29280002282F1928, x1, y1, z1, x2, y2, z2, x3, y3, z3, red, green, blue, alpha, textureDict, textureName, u1, v1, w1, u2, v2, w2, u3, v3, w3) end,
	---Used for drawling Deadline trailing lights, see deadline.ytd  
	---  
	---Each vertex has its own colour that is blended/illuminated on the texture. Additionally, the R, G, and B components are floats that are int-casted internally.  
	---For UVW mapping (u,v,w parameters), reference your favourite internet resource for more details.  
	DRAW_TEXTURED_POLY_WITH_THREE_COLOURS = function(x1, y1, z1, x2, y2, z2, x3, y3, z3, red1, green1, blue1, alpha1, red2, green2, blue2, alpha2, red3, green3, blue3, alpha3, textureDict, textureName, u1, v1, w1, u2, v2, w2, u3, v3, w3) invoker.call(0x736D7AA1B750856B, x1, y1, z1, x2, y2, z2, x3, y3, z3, red1, green1, blue1, alpha1, red2, green2, blue2, alpha2, red3, green3, blue3, alpha3, textureDict, textureName, u1, v1, w1, u2, v2, w2, u3, v3, w3) end,
	---x,y,z = start pos  
	---x2,y2,z2 = end pos  
	---  
	---Draw's a 3D Box between the two x,y,z coords.  
	-----------------  
	---Keep in mind that the edges of the box do only align to the worlds base-vectors. Therefore something like rotation cannot be applied. That means this function is pretty much useless, unless you want a static unicolor box somewhere.  
	---I recommend using a predefined function to call this.  
	---[VB.NET]  
	---Public Sub DrawBox(a As Vector3, b As Vector3, col As Color)  
	---    [Function].Call(Hash.DRAW_BOX,a.X, a.Y, a.Z,b.X, b.Y, b.Z,col.R, col.G, col.B, col.A)  
	---End Sub  
	---  
	---[C#]  
	---public void DrawBox(Vector3 a, Vector3 b, Color col)  
	---{  
	---    Function.Call(Hash.DRAW_BOX,a.X, a.Y, a.Z,b.X, b.Y, b.Z,col.R, col.G, col.B, col.A);  
	---}  
	DRAW_BOX = function(x1, y1, z1, x2, y2, z2, red, green, blue, alpha) invoker.call(0xD3A9971CADAC7252, x1, y1, z1, x2, y2, z2, red, green, blue, alpha) end,
	---  
	SET_BACKFACECULLING = function(toggle) invoker.call(0x23BA6B0C2AD7B0D3, toggle) end,
	---  
	SET_DEPTHWRITING = function(toggle) invoker.call(0xC5C8F970D4EDFF71, toggle) end,
	---  
	BEGIN_TAKE_MISSION_CREATOR_PHOTO = function() return invoker.call(0x1DD2139A9A20DCE8).bool end,
	---  
	GET_STATUS_OF_TAKE_MISSION_CREATOR_PHOTO = function() return invoker.call(0x90A78ECAA4E78453).int end,
	---  
	FREE_MEMORY_FOR_MISSION_CREATOR_PHOTO = function() invoker.call(0x0A46AF8A78DC5E0A) end,
	---  
	LOAD_MISSION_CREATOR_PHOTO = function(p0, p1, p2, p3) return invoker.call(0x4862437A486F91B0, p0, p1, p2, p3).bool end,
	---  
	GET_STATUS_OF_LOAD_MISSION_CREATOR_PHOTO = function(p0) return invoker.call(0x1670F8D05056F257, p0).int end,
	---  
	BEGIN_CREATE_MISSION_CREATOR_PHOTO_PREVIEW = function() return invoker.call(0x7FA5D82B8F58EC06).bool end,
	---  
	GET_STATUS_OF_CREATE_MISSION_CREATOR_PHOTO_PREVIEW = function() return invoker.call(0x5B0316762AFD4A64).int end,
	---  
	FREE_MEMORY_FOR_MISSION_CREATOR_PHOTO_PREVIEW = function() invoker.call(0x346EF3ECAAAB149E) end,
	---  
	BEGIN_TAKE_HIGH_QUALITY_PHOTO = function() return invoker.call(0xA67C35C56EB1BD9D).bool end,
	---  
	GET_STATUS_OF_TAKE_HIGH_QUALITY_PHOTO = function() return invoker.call(0x0D6CA79EEEBD8CA3).int end,
	---  
	FREE_MEMORY_FOR_HIGH_QUALITY_PHOTO = function() invoker.call(0xD801CC02177FA3F1) end,
	---  
	SET_TAKEN_PHOTO_IS_MUGSHOT = function(toggle) invoker.call(0x1BBC135A4D25EDDE, toggle) end,
	---  
	SET_ARENA_THEME_AND_VARIATION_FOR_TAKEN_PHOTO = function(p0, p1) invoker.call(0xF3F776ADA161E47D, p0, p1) end,
	---  
	SET_ON_ISLAND_X_FOR_TAKEN_PHOTO = function(p0) invoker.call(0xADD6627C4D325458, p0) end,
	---1 match in 1 script. cellphone_controller.  
	---p0 is -1 in scripts.  
	SAVE_HIGH_QUALITY_PHOTO = function(unused) return invoker.call(0x3DEC726C25A11BAC, unused).bool end,
	---  
	GET_STATUS_OF_SAVE_HIGH_QUALITY_PHOTO = function() return invoker.call(0x0C0C4E81E1AC60A0).int end,
	---  
	BEGIN_CREATE_LOW_QUALITY_COPY_OF_PHOTO = function(p0) return invoker.call(0x759650634F07B6B4, p0).bool end,
	---  
	GET_STATUS_OF_CREATE_LOW_QUALITY_COPY_OF_PHOTO = function(p0) return invoker.call(0xCB82A0BF0E3E3265, p0).int end,
	---  
	FREE_MEMORY_FOR_LOW_QUALITY_PHOTO = function() invoker.call(0x6A12D88881435DCA) end,
	---  
	DRAW_LOW_QUALITY_PHOTO_TO_PHONE = function(p0, p1) invoker.call(0x1072F115DAB0717E, p0, p1) end,
	---This function is hard-coded to always return 0.  
	GET_MAXIMUM_NUMBER_OF_PHOTOS = function() return invoker.call(0x34D23450F028B0BF).int end,
	---This function is hard-coded to always return 96.  
	GET_MAXIMUM_NUMBER_OF_CLOUD_PHOTOS = function() return invoker.call(0xDC54A7AF8B3A14EF).int end,
	---  
	GET_CURRENT_NUMBER_OF_CLOUD_PHOTOS = function() return invoker.call(0x473151EBC762C6DA).int end,
	---2 matches across 2 scripts. Only showed in appcamera & appmedia. Both were 0.  
	QUEUE_OPERATION_TO_CREATE_SORTED_LIST_OF_PHOTOS = function(p0) return invoker.call(0x2A893980E96B659A, p0).bool end,
	---3 matches across 3 scripts. First 2 were 0, 3rd was 1. Possibly a bool.  
	---appcamera, appmedia, and cellphone_controller.  
	GET_STATUS_OF_SORTED_LIST_OPERATION = function(p0) return invoker.call(0xF5BED327CEA362B1, p0).int end,
	---  
	CLEAR_STATUS_OF_SORTED_LIST_OPERATION = function() invoker.call(0x4AF92ACD3141D96C) end,
	---This function is hard-coded to always return 0.  
	DOES_THIS_PHOTO_SLOT_CONTAIN_A_VALID_PHOTO = function(p0) return invoker.call(0xE791DF1F73ED2C8B, p0).bool end,
	---This function is hard-coded to always return 0.  
	LOAD_HIGH_QUALITY_PHOTO = function(p0) return invoker.call(0xEC72C258667BE5EA, p0).bool end,
	---Hardcoded to always return 2.  
	GET_LOAD_HIGH_QUALITY_PHOTO_STATUS = function(p0) return invoker.call(0x40AFB081F8ADD4EE, p0).int end,
	---  
	DRAW_LIGHT_WITH_RANGEEX = function(x, y, z, r, g, b, range, intensity, shadow) invoker.call(0xF49E9A9716A04595, x, y, z, r, g, b, range, intensity, shadow) end,
	---  
	DRAW_LIGHT_WITH_RANGE = function(posX, posY, posZ, colorR, colorG, colorB, range, intensity) invoker.call(0xF2A1B2771A01DBD4, posX, posY, posZ, colorR, colorG, colorB, range, intensity) end,
	---Parameters:  
	---* pos - coordinate where the spotlight is located  
	---* dir - the direction vector the spotlight should aim at from its current position  
	---* r,g,b - color of the spotlight  
	---* distance - the maximum distance the light can reach  
	---* brightness - the brightness of the light  
	---* roundness - "smoothness" of the circle edge  
	---* radius - the radius size of the spotlight  
	---* falloff - the falloff size of the light's edge (example: www.i.imgur.com/DemAWeO.jpg)  
	---  
	---Example in C# (spotlight aims at the closest vehicle):  
	---Vector3 myPos = Game.Player.Character.Position;  
	---Vehicle nearest = World.GetClosestVehicle(myPos , 1000f);  
	---Vector3 destinationCoords = nearest.Position;  
	---Vector3 dirVector = destinationCoords - myPos;  
	---dirVector.Normalize();  
	---Function.Call(Hash.DRAW_SPOT_LIGHT, pos.X, pos.Y, pos.Z, dirVector.X, dirVector.Y, dirVector.Z, 255, 255, 255, 100.0f, 1f, 0.0f, 13.0f, 1f);  
	DRAW_SPOT_LIGHT = function(posX, posY, posZ, dirX, dirY, dirZ, colorR, colorG, colorB, distance, brightness, hardness, radius, falloff) invoker.call(0xD0F64B265C8C8B33, posX, posY, posZ, dirX, dirY, dirZ, colorR, colorG, colorB, distance, brightness, hardness, radius, falloff) end,
	---  
	DRAW_SHADOWED_SPOT_LIGHT = function(posX, posY, posZ, dirX, dirY, dirZ, colorR, colorG, colorB, distance, brightness, roundness, radius, falloff, shadowId) invoker.call(0x5BCA583A583194DB, posX, posY, posZ, dirX, dirY, dirZ, colorR, colorG, colorB, distance, brightness, roundness, radius, falloff, shadowId) end,
	---  
	FADE_UP_PED_LIGHT = function(p0) invoker.call(0xC9B18B4619F48F7B, p0) end,
	---  
	UPDATE_LIGHTS_ON_ENTITY = function(entity) invoker.call(0xDEADC0DEDEADC0DE, entity) end,
	---  
	SET_LIGHT_OVERRIDE_MAX_INTENSITY_SCALE = function(p0) invoker.call(0x9641588DAB93B4B5, p0) end,
	---  
	GET_LIGHT_OVERRIDE_MAX_INTENSITY_SCALE = function() return invoker.call(0x393BD2275CEB7793).float end,
	---enum MarkerTypes  
	---{  
	---    MarkerTypeUpsideDownCone = 0,  
	--- MarkerTypeVerticalCylinder = 1,  
	---   MarkerTypeThickChevronUp = 2,  
	--- MarkerTypeThinChevronUp = 3,  
	---  MarkerTypeCheckeredFlagRect = 4,  
	---  MarkerTypeCheckeredFlagCircle = 5,  
	---    MarkerTypeVerticleCircle = 6,  
	--- MarkerTypePlaneModel = 7,  
	--- MarkerTypeLostMCDark = 8,  
	--- MarkerTypeLostMCLight = 9,  
	---    MarkerTypeNumber0 = 10,  
	---   MarkerTypeNumber1 = 11,  
	---   MarkerTypeNumber2 = 12,  
	---   MarkerTypeNumber3 = 13,  
	---   MarkerTypeNumber4 = 14,  
	---   MarkerTypeNumber5 = 15,  
	---   MarkerTypeNumber6 = 16,  
	---   MarkerTypeNumber7 = 17,  
	---   MarkerTypeNumber8 = 18,  
	---   MarkerTypeNumber9 = 19,  
	---   MarkerTypeChevronUpx1 = 20,  
	---   MarkerTypeChevronUpx2 = 21,  
	---   MarkerTypeChevronUpx3 = 22,  
	---   MarkerTypeHorizontalCircleFat = 23,  
	---   MarkerTypeReplayIcon = 24,  
	---    MarkerTypeHorizontalCircleSkinny = 25,  
	---    MarkerTypeHorizontalCircleSkinny_Arrow = 26,  
	---  MarkerTypeHorizontalSplitArrowCircle = 27,  
	---    MarkerTypeDebugSphere = 28,  
	---   MarkerTypeDallorSign = 29,  
	---    MarkerTypeHorizontalBars = 30,  
	---    MarkerTypeWolfHead = 31  
	---};  
	---  
	---dirX/Y/Z represent a heading on each axis in which the marker should face, alternatively you can rotate each axis independently with rotX/Y/Z (and set dirX/Y/Z all to 0).  
	---  
	---faceCamera - Rotates only the y-axis (the heading) towards the camera  
	---  
	---p19 - no effect, default value in script is 2  
	---  
	---rotate - Rotates only on the y-axis (the heading)  
	---  
	---textureDict - Name of texture dictionary to load texture from (e.g. "GolfPutting")  
	---  
	---textureName - Name of texture inside dictionary to load (e.g. "PuttingMarker")  
	---  
	---drawOnEnts - Draws the marker onto any entities that intersect it  
	---  
	---basically what he said, except textureDict and textureName are totally not const char*, or if so, then they are always set to 0/NULL/nullptr in every script I checked, eg:  
	---  
	---bj.c: graphics::draw_marker(6, vParam0, 0f, 0f, 1f, 0f, 0f, 0f, 4f, 4f, 4f, 240, 200, 80, iVar1, 0, 0, 2, 0, 0, 0, false);  
	---  
	---his is what I used to draw an amber downward pointing chevron "V", has to be redrawn every frame.  The 180 is for 180 degrees rotation around the Y axis, the 50 is alpha, assuming max is 100, but it will accept 255.  
	---  
	---GRAPHICS::DRAW_MARKER(2, v.x, v.y, v.z + 2, 0, 0, 0, 0, 180, 0, 2, 2, 2, 255, 128, 0, 50, 0, 1, 1, 0, 0, 0, 0);  
	---  
	---  
	DRAW_MARKER = function(type, posX, posY, posZ, dirX, dirY, dirZ, rotX, rotY, rotZ, scaleX, scaleY, scaleZ, red, green, blue, alpha, bobUpAndDown, faceCamera, p19, rotate, textureDict, textureName, drawOnEnts) invoker.call(0x28477EC23D892089, type, posX, posY, posZ, dirX, dirY, dirZ, rotX, rotY, rotZ, scaleX, scaleY, scaleZ, red, green, blue, alpha, bobUpAndDown, faceCamera, p19, rotate, textureDict, textureName, drawOnEnts) end,
	---  
	DRAW_MARKER_EX = function(type, posX, posY, posZ, dirX, dirY, dirZ, rotX, rotY, rotZ, scaleX, scaleY, scaleZ, red, green, blue, alpha, bobUpAndDown, faceCamera, p19, rotate, textureDict, textureName, drawOnEnts, p24, p25) invoker.call(0xE82728F0DE75D13A, type, posX, posY, posZ, dirX, dirY, dirZ, rotX, rotY, rotZ, scaleX, scaleY, scaleZ, red, green, blue, alpha, bobUpAndDown, faceCamera, p19, rotate, textureDict, textureName, drawOnEnts, p24, p25) end,
	---Draws a 3D sphere, typically seen in the GTA:O freemode event "Penned In".  
	---Example https://imgur.com/nCbtS4H  
	---  
	---alpha - The alpha for the sphere. Goes from 0.0 to 1.0.  
	DRAW_MARKER_SPHERE = function(x, y, z, radius, red, green, blue, alpha) invoker.call(0x799017F9E3B10112, x, y, z, radius, red, green, blue, alpha) end,
	---Creates a checkpoint. Returns the handle of the checkpoint.  
	---  
	---20/03/17 : Attention, checkpoints are already handled by the game itself, so you must not loop it like markers.  
	---  
	---Parameters:  
	---* type - The type of checkpoint to create. See below for a list of checkpoint types.  
	---* pos1 - The position of the checkpoint.  
	---* pos2 - The position of the next checkpoint to point to.  
	---* radius - The radius of the checkpoint.  
	---* color - The color of the checkpoint.  
	---* reserved - Special parameter, see below for details. Usually set to 0 in the scripts.  
	---  
	---Checkpoint types:  
	---0-4---------Cylinder: 1 arrow, 2 arrow, 3 arrows, CycleArrow, Checker  
	---5-9---------Cylinder: 1 arrow, 2 arrow, 3 arrows, CycleArrow, Checker  
	---10-14-------Ring: 1 arrow, 2 arrow, 3 arrows, CycleArrow, Checker  
	---15-19-------1 arrow, 2 arrow, 3 arrows, CycleArrow, Checker        
	---20-24-------Cylinder: 1 arrow, 2 arrow, 3 arrows, CycleArrow, Checker   
	---25-29-------Cylinder: 1 arrow, 2 arrow, 3 arrows, CycleArrow, Checker      
	---30-34-------Cylinder: 1 arrow, 2 arrow, 3 arrows, CycleArrow, Checker   
	---35-38-------Ring: Airplane Up, Left, Right, UpsideDown  
	---39----------?  
	---40----------Ring: just a ring  
	---41----------?  
	---42-44-------Cylinder w/ number (uses 'reserved' parameter)  
	---45-47-------Cylinder no arrow or number  
	---  
	---If using type 42-44, reserved sets number / number and shape to display  
	---  
	---0-99------------Just numbers (0-99)  
	---100-109-----------------Arrow (0-9)  
	---110-119------------Two arrows (0-9)  
	---120-129----------Three arrows (0-9)  
	---130-139----------------Circle (0-9)  
	---140-149------------CycleArrow (0-9)  
	---150-159----------------Circle (0-9)  
	---160-169----Circle  w/ pointer (0-9)  
	---170-179-------Perforated ring (0-9)  
	---180-189----------------Sphere (0-9)  
	CREATE_CHECKPOINT = function(type, posX1, posY1, posZ1, posX2, posY2, posZ2, diameter, red, green, blue, alpha, reserved) return invoker.call(0x0134F0835AB6BFCB, type, posX1, posY1, posZ1, posX2, posY2, posZ2, diameter, red, green, blue, alpha, reserved).int end,
	---  
	SET_CHECKPOINT_INSIDE_CYLINDER_HEIGHT_SCALE = function(checkpoint, scale) invoker.call(0x4B5B4DA5D79F1943, checkpoint, scale) end,
	---  
	SET_CHECKPOINT_INSIDE_CYLINDER_SCALE = function(checkpoint, scale) invoker.call(0x44621483FF966526, checkpoint, scale) end,
	---Sets the cylinder height of the checkpoint.  
	---  
	---Parameters:  
	---* nearHeight - The height of the checkpoint when inside of the radius.  
	---* farHeight - The height of the checkpoint when outside of the radius.  
	---* radius - The radius of the checkpoint.  
	SET_CHECKPOINT_CYLINDER_HEIGHT = function(checkpoint, nearHeight, farHeight, radius) invoker.call(0x2707AAE9D9297D89, checkpoint, nearHeight, farHeight, radius) end,
	---Sets the checkpoint color.  
	SET_CHECKPOINT_RGBA = function(checkpoint, red, green, blue, alpha) invoker.call(0x7167371E8AD747F7, checkpoint, red, green, blue, alpha) end,
	---Sets the checkpoint icon color.  
	SET_CHECKPOINT_RGBA2 = function(checkpoint, red, green, blue, alpha) invoker.call(0xB9EA40907C680580, checkpoint, red, green, blue, alpha) end,
	---This does not move an existing checkpoint... so wtf.  
	SET_CHECKPOINT_CLIPPLANE_WITH_POS_NORM = function(checkpoint, posX, posY, posZ, unkX, unkY, unkZ) invoker.call(0xF51D36185993515D, checkpoint, posX, posY, posZ, unkX, unkY, unkZ) end,
	---  
	SET_CHECKPOINT_FORCE_OLD_ARROW_POINTING = function(checkpoint) invoker.call(0xFCF6788FC4860CD4, checkpoint) end,
	---Unknown. Called after creating a checkpoint (type: 51) in the creators.  
	SET_CHECKPOINT_DECAL_ROT_ALIGNED_TO_CAMERA_ROT = function(checkpoint) invoker.call(0x615D3925E87A3B26, checkpoint) end,
	---  
	SET_CHECKPOINT_FORCE_DIRECTION = function(checkpoint) invoker.call(0xDB1EA9411C8911EC, checkpoint) end,
	---  
	SET_CHECKPOINT_DIRECTION = function(checkpoint, posX, posY, posZ) invoker.call(0x3C788E7F6438754D, checkpoint, posX, posY, posZ) end,
	---  
	DELETE_CHECKPOINT = function(checkpoint) invoker.call(0xF5ED37F54CD4D52E, checkpoint) end,
	---  
	DONT_RENDER_IN_GAME_UI = function(p0) invoker.call(0x22A249A53034450A, p0) end,
	---  
	FORCE_RENDER_IN_GAME_UI = function(toggle) invoker.call(0xDC459CFA0CCE245B, toggle) end,
	---This function can requests texture dictonaries from following RPFs:  
	---scaleform_generic.rpf  
	---scaleform_minigames.rpf  
	---scaleform_minimap.rpf  
	---scaleform_web.rpf  
	---  
	---last param isnt a toggle  
	REQUEST_STREAMED_TEXTURE_DICT = function(textureDict, p1) invoker.call(0xDFA2EF8E04127DD5, textureDict, p1) end,
	---  
	HAS_STREAMED_TEXTURE_DICT_LOADED = function(textureDict) return invoker.call(0x0145F696AAAAD2E4, textureDict).bool end,
	---  
	SET_STREAMED_TEXTURE_DICT_AS_NO_LONGER_NEEDED = function(textureDict) invoker.call(0xBE2CACCF5A8AA805, textureDict) end,
	---Draws a rectangle on the screen.  
	---  
	----x: The relative X point of the center of the rectangle. (0.0-1.0, 0.0 is the left edge of the screen, 1.0 is the right edge of the screen)  
	---  
	----y: The relative Y point of the center of the rectangle. (0.0-1.0, 0.0 is the top edge of the screen, 1.0 is the bottom edge of the screen)  
	---  
	----width: The relative width of the rectangle. (0.0-1.0, 1.0 means the whole screen width)  
	---  
	----height: The relative height of the rectangle. (0.0-1.0, 1.0 means the whole screen height)  
	---  
	----R: Red part of the color. (0-255)  
	---  
	----G: Green part of the color. (0-255)  
	---  
	----B: Blue part of the color. (0-255)  
	---  
	----A: Alpha part of the color. (0-255, 0 means totally transparent, 255 means totally opaque)  
	---  
	---The total number of rectangles to be drawn in one frame is apparently limited to 399.  
	---  
	DRAW_RECT = function(x, y, width, height, r, g, b, a, p8) invoker.call(0x3A618A217E5154F0, x, y, width, height, r, g, b, a, p8) end,
	---Sets a flag defining whether or not script draw commands should continue being drawn behind the pause menu. This is usually used for TV channels and other draw commands that are used with a world render target.  
	SET_SCRIPT_GFX_DRAW_BEHIND_PAUSEMENU = function(toggle) invoker.call(0xC6372ECD45D73BCD, toggle) end,
	---Sets the draw order for script draw commands.  
	---  
	---Examples from decompiled scripts:  
	---GRAPHICS::SET_SCRIPT_GFX_DRAW_ORDER(7);  
	---GRAPHICS::DRAW_RECT(0.5, 0.5, 3.0, 3.0, v_4, v_5, v_6, a_0._f172, 0);  
	---  
	---GRAPHICS::SET_SCRIPT_GFX_DRAW_ORDER(1);  
	---GRAPHICS::DRAW_RECT(0.5, 0.5, 1.5, 1.5, 0, 0, 0, 255, 0);  
	SET_SCRIPT_GFX_DRAW_ORDER = function(drawOrder) invoker.call(0x61BB1D9B3A95D802, drawOrder) end,
	---horizontalAlign: The horizontal alignment. This can be 67 ('C'), 76 ('L'), or 82 ('R').  
	---verticalAlign: The vertical alignment. This can be 67 ('C'), 66 ('B'), or 84 ('T').  
	---  
	---This function anchors script draws to a side of the safe zone. This needs to be called to make the interface independent of the player's safe zone configuration.  
	---  
	---These values are equivalent to alignX and alignY in common:/data/ui/frontend.xml, which can be used as a baseline for default alignment.  
	---  
	---Using any other value (including 0) will result in the safe zone not being taken into account for this draw. The canonical value for this is 'I' (73).  
	---  
	---For example, you can use SET_SCRIPT_GFX_ALIGN(0, 84) to only scale on the Y axis (to the top), but not change the X axis.  
	---  
	---To reset the value, use RESET_SCRIPT_GFX_ALIGN.  
	SET_SCRIPT_GFX_ALIGN = function(horizontalAlign, verticalAlign) invoker.call(0xB8A850F20A067EB6, horizontalAlign, verticalAlign) end,
	---This function resets the alignment set using SET_SCRIPT_GFX_ALIGN and SET_SCRIPT_GFX_ALIGN_PARAMS to the default values ('I', 'I'; 0, 0, 0, 0).  
	---This should be used after having used the aforementioned functions in order to not affect any other scripts attempting to draw.  
	RESET_SCRIPT_GFX_ALIGN = function() invoker.call(0xE3A3DB414A373DAB) end,
	---Sets the draw offset/calculated size for SET_SCRIPT_GFX_ALIGN. If using any alignment other than left/top, the game expects the width/height to be configured using this native in order to get a proper starting position for the draw command.  
	SET_SCRIPT_GFX_ALIGN_PARAMS = function(x, y, w, h) invoker.call(0xF5A2C681787E579D, x, y, w, h) end,
	---Calculates the effective X/Y fractions when applying the values set by SET_SCRIPT_GFX_ALIGN and SET_SCRIPT_GFX_ALIGN_PARAMS  
	GET_SCRIPT_GFX_ALIGN_POSITION = function(x, y, calculatedX, calculatedY) invoker.call(0x6DD8F5AA635EB4B2, x, y, calculatedX, calculatedY) end,
	---Gets the scale of safe zone. if the safe zone size scale is max, it will return 1.0.  
	GET_SAFE_ZONE_SIZE = function() return invoker.call(0xBAF107B6BB2C97F0).float end,
	---Draws a 2D sprite on the screen.  
	---  
	---Parameters:  
	---textureDict - Name of texture dictionary to load texture from (e.g. "CommonMenu", "MPWeaponsCommon", etc.)  
	---  
	---textureName - Name of texture to load from texture dictionary (e.g. "last_team_standing_icon", "tennis_icon", etc.)  
	---  
	---screenX/Y - Screen offset (0.5 = center)  
	---scaleX/Y - Texture scaling. Negative values can be used to flip the texture on that axis. (0.5 = half)  
	---  
	---heading - Texture rotation in degrees (default = 0.0) positive is clockwise, measured in degrees  
	---  
	---red,green,blue - Sprite color (default = 255/255/255)  
	---  
	---alpha - opacity level  
	DRAW_SPRITE = function(textureDict, textureName, screenX, screenY, width, height, heading, red, green, blue, alpha, p11, p12) invoker.call(0xE7FFAE5EBF23D890, textureDict, textureName, screenX, screenY, width, height, heading, red, green, blue, alpha, p11, p12) end,
	---Used in arcade games and Beam hack minigame in Doomsday Heist. I will most certainly dive into this to try replicate arcade games.  
	---x position must be between 0.0 and 1.0 (1.0 being the most right side of the screen)  
	---y position must be between 0.0 and 1.0 (1.0 being the most bottom side of the screen)  
	---width 0.0 - 1.0 is the reasonable amount generally  
	---height 0.0 - 1.0 is the reasonable amount generally  
	---p6 almost always 0.0  
	---p11 seems to be unknown but almost always 0 int  
	DRAW_SPRITE_ARX = function(textureDict, textureName, x, y, width, height, p6, red, green, blue, alpha, p11, p12) invoker.call(0x2D3B147AFAD49DE0, textureDict, textureName, x, y, width, height, p6, red, green, blue, alpha, p11, p12) end,
	---Similar to _DRAW_SPRITE, but seems to be some kind of "interactive" sprite, at least used by render targets.  
	---These seem to be the only dicts ever requested by this native:  
	---  
	---prop_screen_biker_laptop  
	---Prop_Screen_GR_Disruption  
	---Prop_Screen_TaleOfUs  
	---prop_screen_nightclub  
	---Prop_Screen_IE_Adhawk  
	---prop_screen_sm_free_trade_shipping  
	---prop_screen_hacker_truck  
	---MPDesktop  
	---Prop_Screen_Nightclub  
	---And a few others  
	---  
	DRAW_SPRITE_NAMED_RENDERTARGET = function(textureDict, textureName, screenX, screenY, width, height, heading, red, green, blue, alpha, p11) invoker.call(0x2BC54A8188768488, textureDict, textureName, screenX, screenY, width, height, heading, red, green, blue, alpha, p11) end,
	---Similar to DRAW_SPRITE, but allows to specify the texture coordinates used to draw the sprite.  
	---  
	---u1, v1 - texture coordinates for the top-left corner  
	---u2, v2 - texture coordinates for the bottom-right corner  
	DRAW_SPRITE_ARX_WITH_UV = function(textureDict, textureName, x, y, width, height, u1, v1, u2, v2, heading, red, green, blue, alpha, p15) invoker.call(0x95812F9B26074726, textureDict, textureName, x, y, width, height, u1, v1, u2, v2, heading, red, green, blue, alpha, p15) end,
	---Example:  
	---GRAPHICS::ADD_ENTITY_ICON(a_0, "MP_Arrow");  
	---  
	---I tried this and nothing happened...  
	ADD_ENTITY_ICON = function(entity, icon) return invoker.call(0x9CD43EEE12BF4DD0, entity, icon).int end,
	---  
	SET_ENTITY_ICON_VISIBILITY = function(entity, toggle) invoker.call(0xE0E8BEECCA96BA31, entity, toggle) end,
	---  
	SET_ENTITY_ICON_COLOR = function(entity, red, green, blue, alpha) invoker.call(0x1D5F595CCAE2E238, entity, red, green, blue, alpha) end,
	---Sets the on-screen drawing origin for draw-functions (which is normally x=0,y=0 in the upper left corner of the screen) to a world coordinate.  
	---From now on, the screen coordinate which displays the given world coordinate on the screen is seen as x=0,y=0.  
	---  
	---Example in C#:  
	---Vector3 boneCoord = somePed.GetBoneCoord(Bone.SKEL_Head);  
	---Function.Call(Hash.SET_DRAW_ORIGIN, boneCoord.X, boneCoord.Y, boneCoord.Z, 0);  
	---Function.Call(Hash.DRAW_SPRITE, "helicopterhud", "hud_corner", -0.01, -0.015, 0.013, 0.013, 0.0, 255, 0, 0, 200);  
	---Function.Call(Hash.DRAW_SPRITE, "helicopterhud", "hud_corner", 0.01, -0.015, 0.013, 0.013, 90.0, 255, 0, 0, 200);  
	---Function.Call(Hash.DRAW_SPRITE, "helicopterhud", "hud_corner", -0.01, 0.015, 0.013, 0.013, 270.0, 255, 0, 0, 200);  
	---Function.Call(Hash.DRAW_SPRITE, "helicopterhud", "hud_corner", 0.01, 0.015, 0.013, 0.013, 180.0, 255, 0, 0, 200);  
	---Function.Call(Hash.CLEAR_DRAW_ORIGIN);  
	---  
	---Result: www11.pic-upload.de/19.06.15/bkqohvil2uao.jpg  
	---If the pedestrian starts walking around now, the sprites are always around her head, no matter where the head is displayed on the screen.  
	---  
	---This function also effects the drawing of texts and other UI-elements.  
	---The effect can be reset by calling GRAPHICS::CLEAR_DRAW_ORIGIN().  
	SET_DRAW_ORIGIN = function(x, y, z, p3) invoker.call(0xAA0008F3BBB8F416, x, y, z, p3) end,
	---Resets the screen's draw-origin which was changed by the function GRAPHICS::SET_DRAW_ORIGIN(...) back to x=0,y=0.  
	---  
	---See GRAPHICS::SET_DRAW_ORIGIN(...) for further information.  
	CLEAR_DRAW_ORIGIN = function() invoker.call(0xFF0B610F6BE0D7AF) end,
	---  
	SET_BINK_MOVIE = function(name) return invoker.call(0x338D9F609FD632DB, name).int end,
	---  
	PLAY_BINK_MOVIE = function(binkMovie) invoker.call(0x70D2CC8A542A973C, binkMovie) end,
	---  
	STOP_BINK_MOVIE = function(binkMovie) invoker.call(0x63606A61DE68898A, binkMovie) end,
	---  
	RELEASE_BINK_MOVIE = function(binkMovie) invoker.call(0x04D950EEFA4EED8C, binkMovie) end,
	---  
	DRAW_BINK_MOVIE = function(binkMovie, p1, p2, p3, p4, p5, r, g, b, a) invoker.call(0x7118E83EEB9F7238, binkMovie, p1, p2, p3, p4, p5, r, g, b, a) end,
	---In percentage: 0.0 - 100.0  
	SET_BINK_MOVIE_TIME = function(binkMovie, progress) invoker.call(0x0CB6B3446855B57A, binkMovie, progress) end,
	---In percentage: 0.0 - 100.0  
	GET_BINK_MOVIE_TIME = function(binkMovie) return invoker.call(0x8E17DDD6B9D5BF29, binkMovie).float end,
	---binkMovie: Is return value from _SET_BINK_MOVIE. Has something to do with bink volume? (audRequestedSettings::SetVolumeCurveScale)  
	SET_BINK_MOVIE_VOLUME = function(binkMovie, value) invoker.call(0xAFF33B1178172223, binkMovie, value) end,
	---  
	ATTACH_TV_AUDIO_TO_ENTITY = function(entity) invoker.call(0x845BAD77CC770633, entity) end,
	---  
	SET_BINK_MOVIE_AUDIO_FRONTEND = function(binkMovie, p1) invoker.call(0xF816F2933752322D, binkMovie, p1) end,
	---Probably changes tvs from being a 3d audio to being "global" audio  
	SET_TV_AUDIO_FRONTEND = function(toggle) invoker.call(0x113D2C5DC57E1774, toggle) end,
	---  
	SET_BINK_SHOULD_SKIP = function(binkMovie, bShouldSkip) invoker.call(0x6805D58CAA427B72, binkMovie, bShouldSkip) end,
	---  
	LOAD_MOVIE_MESH_SET = function(movieMeshSetName) return invoker.call(0xB66064452270E8F1, movieMeshSetName).int end,
	---  
	RELEASE_MOVIE_MESH_SET = function(movieMeshSet) invoker.call(0xEB119AA014E89183, movieMeshSet) end,
	---  
	QUERY_MOVIE_MESH_SET_STATE = function(p0) return invoker.call(0x9B6E70C5CEEF4EEB, p0).int end,
	---int screenresx,screenresy;  
	---GET_SCREEN_RESOLUTION(&screenresx,&screenresy);  
	GET_SCREEN_RESOLUTION = function(x, y) invoker.call(0x888D57E407E63624, x, y) end,
	---Returns current screen resolution.  
	GET_ACTUAL_SCREEN_RESOLUTION = function(x, y) invoker.call(0x873C9F3104101DD3, x, y) end,
	---  
	GET_ASPECT_RATIO = function(b) return invoker.call(0xF1307EF624A80D87, b).float end,
	---  
	GET_SCREEN_ASPECT_RATIO = function() return invoker.call(0xB2EBE8CBC58B90E9).float end,
	---Setting Aspect Ratio Manually in game will return:  
	---  
	---false - for Narrow format Aspect Ratios (3:2, 4:3, 5:4, etc. )  
	---true - for Wide format Aspect Ratios (5:3, 16:9, 16:10, etc. )  
	---  
	---Setting Aspect Ratio to "Auto" in game will return "false" or "true" based on the actual set Resolution Ratio.  
	GET_IS_WIDESCREEN = function() return invoker.call(0x30CF4BDA4FCB1905).bool end,
	---false = Any resolution < 1280x720  
	---true = Any resolution >= 1280x720  
	GET_IS_HIDEF = function() return invoker.call(0x84ED31191CC5D2C9).bool end,
	---  
	ADJUST_NEXT_POS_SIZE_AS_NORMALIZED_16_9 = function() invoker.call(0xEFABC7722293DA7C) end,
	---  
	DISPLAY_LOADING_SCREEN_NOW = function(onOff) invoker.call(0x7A019A9E156318FC, onOff) end,
	---Enables Night Vision.  
	---  
	---Example:  
	---C#: Function.Call(Hash.SET_NIGHTVISION, true);  
	---C++: GRAPHICS::SET_NIGHTVISION(true);  
	---  
	---BOOL toggle:  
	---true = turns night vision on for your player.  
	---false = turns night vision off for your player.  
	SET_NIGHTVISION = function(toggle) invoker.call(0x18F621F7A5B1F85D, toggle) end,
	---  
	GET_REQUESTINGNIGHTVISION = function() return invoker.call(0x35FB78DC42B7BD21).bool end,
	---  
	GET_USINGNIGHTVISION = function() return invoker.call(0x2202A3F42C8E5F79).bool end,
	---  
	SET_EXPOSURETWEAK = function(toggle) invoker.call(0xEF398BEEE4EF45F9, toggle) end,
	---  
	FORCE_EXPOSURE_READBACK = function(toggle) invoker.call(0x814AF7DCAACC597B, toggle) end,
	---  
	OVERRIDE_NIGHTVISION_LIGHT_RANGE = function(p0) invoker.call(0x43FA7CBE20DAB219, p0) end,
	---  
	SET_NOISEOVERIDE = function(toggle) invoker.call(0xE787BF1C5CF823C9, toggle) end,
	---  
	SET_NOISINESSOVERIDE = function(value) invoker.call(0xCB6A7C3BB17A0C67, value) end,
	---Convert a world coordinate into its relative screen coordinate.  (WorldToScreen)  
	---  
	---Returns a boolean; whether or not the operation was successful. It will return false if the coordinates given are not visible to the rendering camera.  
	---  
	---  
	---For .NET users...  
	---  
	---VB:  
	---Public Shared Function World3DToScreen2d(pos as vector3) As Vector2  
	---  
	---        Dim x2dp, y2dp As New Native.OutputArgument  
	---  
	---        Native.Function.Call(Of Boolean)(Native.Hash.GET_SCREEN_COORD_FROM_WORLD_COORD , pos.x, pos.y, pos.z, x2dp, y2dp)  
	---        Return New Vector2(x2dp.GetResult(Of Single), y2dp.GetResult(Of Single))  
	---        
	---    End Function  
	---  
	---C#:  
	---Vector2 World3DToScreen2d(Vector3 pos)  
	---    {  
	---        var x2dp = new OutputArgument();  
	---        var y2dp = new OutputArgument();  
	---  
	---        Function.Call<bool>(Hash.GET_SCREEN_COORD_FROM_WORLD_COORD , pos.X, pos.Y, pos.Z, x2dp, y2dp);  
	---        return new Vector2(x2dp.GetResult<float>(), y2dp.GetResult<float>());  
	---    }  
	---//USE VERY SMALL VALUES FOR THE SCALE OF RECTS/TEXT because it is dramatically larger on screen than in 3D, e.g '0.05' small.  
	---  
	---Used to be called _WORLD3D_TO_SCREEN2D  
	---  
	---I thought we lost you from the scene forever. It does seem however that calling SET_DRAW_ORIGIN then your natives, then ending it. Seems to work better for certain things such as keeping boxes around people for a predator missile e.g.  
	GET_SCREEN_COORD_FROM_WORLD_COORD = function(worldX, worldY, worldZ, screenX, screenY) return invoker.call(0x34E82F05DF2974F5, worldX, worldY, worldZ, screenX, screenY).bool end,
	---Returns the texture resolution of the passed texture dict+name.  
	---  
	---Note: Most texture resolutions are doubled compared to the console version of the game.  
	GET_TEXTURE_RESOLUTION = function(textureDict, textureName) return invoker.call(0x35736EE65BD00C11, textureDict, textureName).scr_vec3 end,
	---Overriding ped badge texture to a passed texture. It's synced between players (even custom textures!), don't forget to request used dict on *all* clients to make it sync properly. Can be removed by passing empty strings.  
	OVERRIDE_PED_CREW_LOGO_TEXTURE = function(ped, txd, txn) return invoker.call(0x95EB5E34F821BABE, ped, txd, txn).bool end,
	---  
	SET_DISTANCE_BLUR_STRENGTH_OVERRIDE = function(p0) invoker.call(0xE2892E7E55D7073A, p0) end,
	---Purpose of p0 and p1 unknown.  
	SET_FLASH = function(p0, p1, fadeIn, duration, fadeOut) invoker.call(0x0AB84296FED9CFC6, p0, p1, fadeIn, duration, fadeOut) end,
	---  
	DISABLE_OCCLUSION_THIS_FRAME = function() invoker.call(0x3669F1B198DCAA4F) end,
	---Does not affect weapons, particles, fire/explosions, flashlights or the sun.  
	---When set to true, all emissive textures (including ped components that have light effects), street lights, building lights, vehicle lights, etc will all be turned off.  
	---  
	---Used in Humane Labs Heist for EMP.  
	---  
	---state: True turns off all artificial light sources in the map: buildings, street lights, car lights, etc. False turns them back on.  
	SET_ARTIFICIAL_LIGHTS_STATE = function(state) invoker.call(0x1268615ACE24D504, state) end,
	---If "blackout" is enabled, this native allows you to ignore "blackout" for vehicles.  
	SET_ARTIFICIAL_VEHICLE_LIGHTS_STATE = function(toggle) invoker.call(0xE2B187C0939B3D32, toggle) end,
	---  
	DISABLE_HDTEX_THIS_FRAME = function() invoker.call(0xC35A6D07C93802B2) end,
	---Creates a tracked point, useful for checking the visibility of a 3D point on screen.  
	CREATE_TRACKED_POINT = function() return invoker.call(0xE2C9439ED45DEA60).int end,
	---  
	SET_TRACKED_POINT_INFO = function(point, x, y, z, radius) invoker.call(0x164ECBB3CF750CB0, point, x, y, z, radius) end,
	---  
	IS_TRACKED_POINT_VISIBLE = function(point) return invoker.call(0xC45CCDAAC9221CA8, point).bool end,
	---  
	DESTROY_TRACKED_POINT = function(point) invoker.call(0xB25DC90BAD56CA42, point) end,
	---This function is hard-coded to always return 0.  
	SET_GRASS_CULL_SPHERE = function(p0, p1, p2, p3) return invoker.call(0xBE197EAA669238F4, p0, p1, p2, p3).int end,
	---This native does absolutely nothing, just a nullsub  
	REMOVE_GRASS_CULL_SPHERE = function(handle) invoker.call(0x61F95E5BB3E0A8C6, handle) end,
	---  
	PROCGRASS_ENABLE_CULLSPHERE = function(handle, x, y, z, scale) invoker.call(0xAE51BC858F32BA66, handle, x, y, z, scale) end,
	---  
	PROCGRASS_DISABLE_CULLSPHERE = function(handle) invoker.call(0x649C97D52332341A, handle) end,
	---  
	PROCGRASS_IS_CULLSPHERE_ENABLED = function(handle) return invoker.call(0x2C42340F916C5930, handle).bool end,
	---  
	PROCGRASS_ENABLE_AMBSCALESCAN = function() invoker.call(0x14FC5833464340A8) end,
	---  
	PROCGRASS_DISABLE_AMBSCALESCAN = function() invoker.call(0x0218BA067D249DEA) end,
	---  
	DISABLE_PROCOBJ_CREATION = function() invoker.call(0x1612C45F9E3E0D44) end,
	---  
	ENABLE_PROCOBJ_CREATION = function() invoker.call(0x5DEBD9C4DC995692) end,
	---  
	GRASSBATCH_ENABLE_FLATTENING_EXT_IN_SPHERE = function(x, y, z, p3, p4, p5, p6, scale) invoker.call(0xAAE9BE70EC7C69AB, x, y, z, p3, p4, p5, p6, scale) end,
	---Wraps 0xAAE9BE70EC7C69AB with FLT_MAX as p7  
	GRASSBATCH_ENABLE_FLATTENING_IN_SPHERE = function(x, y, z, radius, p4, p5, p6) invoker.call(0x6D955F6A9E0295B1, x, y, z, radius, p4, p5, p6) end,
	---  
	GRASSBATCH_DISABLE_FLATTENING = function() invoker.call(0x302C91AB2D477F7E) end,
	---  
	CASCADE_SHADOWS_INIT_SESSION = function() invoker.call(0x03FC694AE06C5A20) end,
	---  
	CASCADE_SHADOWS_SET_CASCADE_BOUNDS = function(p0, p1, p2, p3, p4, p5, p6, p7) invoker.call(0xD2936CAB8B58FCBD, p0, p1, p2, p3, p4, p5, p6, p7) end,
	---  
	CASCADE_SHADOWS_SET_CASCADE_BOUNDS_SCALE = function(p0) invoker.call(0x5F0F3F56635809EF, p0) end,
	---  
	CASCADE_SHADOWS_SET_ENTITY_TRACKER_SCALE = function(p0) invoker.call(0x5E9DAF5A20F15908, p0) end,
	---  
	CASCADE_SHADOWS_SET_SPLIT_Z_EXP_WEIGHT = function(p0) invoker.call(0x36F6626459D91457, p0) end,
	---  
	CASCADE_SHADOWS_SET_BOUND_POSITION = function(p0) invoker.call(0x259BA6D4E6F808F1, p0) end,
	---When this is set to ON, shadows only draw as you get nearer.  
	---  
	---When OFF, they draw from a further distance.  
	CASCADE_SHADOWS_ENABLE_ENTITY_TRACKER = function(toggle) invoker.call(0x80ECBC0C856D3B0B, toggle) end,
	---  
	CASCADE_SHADOWS_SET_SCREEN_SIZE_CHECK_ENABLED = function(p0) invoker.call(0x25FC3E33A31AD0C9, p0) end,
	---Possible values:  
	---"CSM_ST_POINT"  
	---"CSM_ST_LINEAR"  
	---"CSM_ST_TWOTAP"  
	---"CSM_ST_BOX3x3"  
	---"CSM_ST_BOX4x4"  
	---"CSM_ST_DITHER2_LINEAR"  
	---"CSM_ST_CUBIC"  
	---"CSM_ST_DITHER4"  
	---"CSM_ST_DITHER16"  
	---"CSM_ST_SOFT16"  
	---"CSM_ST_DITHER16_RPDB"  
	---"CSM_ST_POISSON16_RPDB_GNORM"  
	---"CSM_ST_HIGHRES_BOX4x4"  
	---"CSM_ST_CLOUDS_SIMPLE"  
	---"CSM_ST_CLOUDS_LINEAR"  
	---"CSM_ST_CLOUDS_TWOTAP"  
	---"CSM_ST_CLOUDS_BOX3x3"  
	---"CSM_ST_CLOUDS_BOX4x4"  
	---"CSM_ST_CLOUDS_DITHER2_LINEAR"  
	---"CSM_ST_CLOUDS_SOFT16"  
	---"CSM_ST_CLOUDS_DITHER16_RPDB"  
	---"CSM_ST_CLOUDS_POISSON16_RPDB_GNORM"  
	CASCADE_SHADOWS_SET_SHADOW_SAMPLE_TYPE = function(type) invoker.call(0xB11D94BC55F41932, type) end,
	---  
	CASCADE_SHADOWS_CLEAR_SHADOW_SAMPLE_TYPE = function() invoker.call(0x27CB772218215325) end,
	---  
	CASCADE_SHADOWS_SET_AIRCRAFT_MODE = function(p0) invoker.call(0x6DDBF9DFFC4AC080, p0) end,
	---  
	CASCADE_SHADOWS_SET_DYNAMIC_DEPTH_MODE = function(p0) invoker.call(0xD39D13C9FEBF0511, p0) end,
	---  
	CASCADE_SHADOWS_SET_DYNAMIC_DEPTH_VALUE = function(p0) invoker.call(0x02AC28F3A01FA04A, p0) end,
	---  
	CASCADE_SHADOWS_ENABLE_FREEZER = function(p0) invoker.call(0x0AE73D8DF3A762B2, p0) end,
	---  
	WATER_REFLECTION_SET_SCRIPT_OBJECT_VISIBILITY = function(p0) invoker.call(0xCA465D9CC0D231BA, p0) end,
	---  
	GOLF_TRAIL_SET_ENABLED = function(toggle) invoker.call(0xA51C4B86B71652AE, toggle) end,
	---p8 seems to always be false.  
	GOLF_TRAIL_SET_PATH = function(p0, p1, p2, p3, p4, p5, p6, p7, p8) invoker.call(0x312342E1A4874F3F, p0, p1, p2, p3, p4, p5, p6, p7, p8) end,
	---  
	GOLF_TRAIL_SET_RADIUS = function(p0, p1, p2) invoker.call(0x2485D34E50A22E84, p0, p1, p2) end,
	---  
	GOLF_TRAIL_SET_COLOUR = function(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11) invoker.call(0x12995F2E53FFA601, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11) end,
	---  
	GOLF_TRAIL_SET_TESSELLATION = function(p0, p1) invoker.call(0xDBAA5EC848BA2D46, p0, p1) end,
	---  
	GOLF_TRAIL_SET_FIXED_CONTROL_POINT_ENABLE = function(p0) invoker.call(0xC0416B061F2B7E5E, p0) end,
	---12 matches across 4 scripts. All 4 scripts were job creators.  
	---  
	---type ranged from 0 - 2.  
	---p4 was always 0.2f. Likely scale.  
	---assuming p5 - p8 is RGBA, the graphic is always yellow (255, 255, 0, 255).  
	---  
	---Tested but noticed nothing.  
	GOLF_TRAIL_SET_FIXED_CONTROL_POINT = function(type, xPos, yPos, zPos, p4, red, green, blue, alpha) invoker.call(0xB1BB03742917A5D6, type, xPos, yPos, zPos, p4, red, green, blue, alpha) end,
	---Only appeared in Golf & Golf_mp. Parameters were all ptrs  
	GOLF_TRAIL_SET_SHADER_PARAMS = function(p0, p1, p2, p3, p4) invoker.call(0x9CFDD90B2B844BF7, p0, p1, p2, p3, p4) end,
	---  
	GOLF_TRAIL_SET_FACING = function(p0) invoker.call(0x06F761EA47C1D3ED, p0) end,
	---  
	GOLF_TRAIL_GET_MAX_HEIGHT = function() return invoker.call(0xA4819F5E23E2FFAD).float end,
	---  
	GOLF_TRAIL_GET_VISUAL_CONTROL_POINT = function(p0) return invoker.call(0xA4664972A9B8F8BA, p0).scr_vec3 end,
	---Toggles Heatvision on/off.  
	SET_SEETHROUGH = function(toggle) invoker.call(0x7E08924259E08CE0, toggle) end,
	---  
	GET_USINGSEETHROUGH = function() return invoker.call(0x44B80ABAB9D80BD3).bool end,
	---  
	SEETHROUGH_RESET = function() invoker.call(0x70A64C0234EF522C) end,
	---  
	SEETHROUGH_SET_FADE_STARTDISTANCE = function(distance) invoker.call(0xA78DE25577300BA1, distance) end,
	---  
	SEETHROUGH_SET_FADE_ENDDISTANCE = function(distance) invoker.call(0x9D75795B9DC6EBBF, distance) end,
	---  
	SEETHROUGH_GET_MAX_THICKNESS = function() return invoker.call(0x43DBAE39626CE83F).float end,
	---0.0 = you will not be able to see people behind the walls. 50.0 and more = you will see everyone through the walls. More value is "better" view. See https://gfycat.com/FirmFlippantGourami  
	---min: 1.0  
	---max: 10000.0  
	SEETHROUGH_SET_MAX_THICKNESS = function(thickness) invoker.call(0x0C8FAC83902A62DF, thickness) end,
	---  
	SEETHROUGH_SET_NOISE_MIN = function(amount) invoker.call(0xFF5992E1C9E65D05, amount) end,
	---  
	SEETHROUGH_SET_NOISE_MAX = function(amount) invoker.call(0xFEBFBFDFB66039DE, amount) end,
	---  
	SEETHROUGH_SET_HILIGHT_INTENSITY = function(intensity) invoker.call(0x19E50EB6E33E1D28, intensity) end,
	---  
	SEETHROUGH_SET_HIGHLIGHT_NOISE = function(noise) invoker.call(0x1636D7FC127B10D2, noise) end,
	---min: 0.0  
	---max: 0.75  
	SEETHROUGH_SET_HEATSCALE = function(index, heatScale) invoker.call(0xD7D0B00177485411, index, heatScale) end,
	---  
	SEETHROUGH_SET_COLOR_NEAR = function(red, green, blue) invoker.call(0x1086127B3A63505E, red, green, blue) end,
	---Setter for GET_MOTIONBLUR_MAX_VEL_SCALER  
	SET_MOTIONBLUR_MAX_VEL_SCALER = function(p0) invoker.call(0xB3C641F3630BF6DA, p0) end,
	---Getter for SET_MOTIONBLUR_MAX_VEL_SCALER  
	GET_MOTIONBLUR_MAX_VEL_SCALER = function() return invoker.call(0xE59343E9E96529E7).float end,
	---  
	SET_FORCE_MOTIONBLUR = function(toggle) invoker.call(0x6A51F78772175A51, toggle) end,
	---  
	TOGGLE_PLAYER_DAMAGE_OVERLAY = function(toggle) invoker.call(0xE63D7C6EECECB66B, toggle) end,
	---Sets an value related to timecycles.  
	RESET_ADAPTATION = function(p0) invoker.call(0xE3E2C1B4C59DBC77, p0) end,
	---time in ms to transition to fully blurred screen  
	TRIGGER_SCREENBLUR_FADE_IN = function(transitionTime) return invoker.call(0xA328A24AAA6B7FDC, transitionTime).bool end,
	---time in ms to transition from fully blurred to normal  
	TRIGGER_SCREENBLUR_FADE_OUT = function(transitionTime) return invoker.call(0xEFACC8AEF94430D5, transitionTime).bool end,
	---  
	DISABLE_SCREENBLUR_FADE = function() invoker.call(0xDE81239437E8C5A8) end,
	---  
	GET_SCREENBLUR_FADE_CURRENT_TIME = function() return invoker.call(0x5CCABFFCA31DDE33).float end,
	---Returns whether screen transition to blur/from blur is running.  
	IS_SCREENBLUR_FADE_RUNNING = function() return invoker.call(0x7B226C785A52A0A9).bool end,
	---  
	TOGGLE_PAUSED_RENDERPHASES = function(toggle) invoker.call(0xDFC252D8A3E15AB7, toggle) end,
	---  
	GET_TOGGLE_PAUSED_RENDERPHASES_STATUS = function() return invoker.call(0xEB3DAC2C86001E5E).bool end,
	---  
	RESET_PAUSED_RENDERPHASES = function() invoker.call(0xE1C8709406F2C41C) end,
	---  
	GRAB_PAUSEMENU_OWNERSHIP = function() invoker.call(0x851CD923176EBA7C) end,
	---  
	SET_HIDOF_OVERRIDE = function(p0, p1, nearplaneOut, nearplaneIn, farplaneOut, farplaneIn) invoker.call(0xBA3D65906822BED5, p0, p1, nearplaneOut, nearplaneIn, farplaneOut, farplaneIn) end,
	---  
	SET_LOCK_ADAPTIVE_DOF_DISTANCE = function(p0) invoker.call(0xB569F41F3E7E83A4, p0) end,
	---  
	PHONEPHOTOEDITOR_TOGGLE = function(p0) return invoker.call(0x7AC24EAB6D74118D, p0).bool end,
	---  
	PHONEPHOTOEDITOR_IS_ACTIVE = function() return invoker.call(0xBCEDB009461DA156).bool end,
	---  
	PHONEPHOTOEDITOR_SET_FRAME_TXD = function(textureDict, p1) return invoker.call(0x27FEB5254759CDE3, textureDict, p1).bool end,
	---GRAPHICS::START_PARTICLE_FX_NON_LOOPED_AT_COORD("scr_paleto_roof_impact", -140.8576f, 6420.789f, 41.1391f, 0f, 0f, 267.3957f, 0x3F800000, 0, 0, 0);  
	---  
	---Axis - Invert Axis Flags  
	---  
	---Full list of particle effect dictionaries and effects by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/particleEffectsCompact.json  
	---  
	---  
	----------------------------------------------------------------------  
	---C#  
	---  
	---Function.Call<int>(Hash.START_PARTICLE_FX_NON_LOOPED_AT_COORD, = you are calling this function.  
	---  
	---char *effectname = This is an in-game effect name, for e.g. "scr_fbi4_trucks_crash" is used to give the effects when truck crashes etc  
	---  
	---float x, y, z pos = this one is Simple, you just have to declare, where do you want this effect to take place at, so declare the ordinates  
	---  
	---float xrot, yrot, zrot = Again simple? just mention the value in case if you want the effect to rotate.  
	---  
	---float scale = is declare the scale of the effect, this may vary as per the effects for e.g 1.0f  
	---  
	---bool xaxis, yaxis, zaxis = To bool the axis values.  
	---  
	---example:  
	---Function.Call<int>(Hash.START_PARTICLE_FX_NON_LOOPED_AT_COORD, "scr_fbi4_trucks_crash", GTA.Game.Player.Character.Position.X, GTA.Game.Player.Character.Position.Y, GTA.Game.Player.Character.Position.Z + 4f, 0, 0, 0, 5.5f, 0, 0, 0);  
	START_PARTICLE_FX_NON_LOOPED_AT_COORD = function(effectName, xPos, yPos, zPos, xRot, yRot, zRot, scale, xAxis, yAxis, zAxis) return invoker.call(0x25129531F77B9ED3, effectName, xPos, yPos, zPos, xRot, yRot, zRot, scale, xAxis, yAxis, zAxis).bool end,
	---Full list of particle effect dictionaries and effects by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/particleEffectsCompact.json  
	START_NETWORKED_PARTICLE_FX_NON_LOOPED_AT_COORD = function(effectName, xPos, yPos, zPos, xRot, yRot, zRot, scale, xAxis, yAxis, zAxis, p11) return invoker.call(0xF56B8137DF10135D, effectName, xPos, yPos, zPos, xRot, yRot, zRot, scale, xAxis, yAxis, zAxis, p11).bool end,
	---GRAPHICS::START_PARTICLE_FX_NON_LOOPED_ON_PED_BONE("scr_sh_bong_smoke", PLAYER::PLAYER_PED_ID(), -0.025f, 0.13f, 0f, 0f, 0f, 0f, 31086, 0x3F800000, 0, 0, 0);  
	---  
	---Axis - Invert Axis Flags  
	---  
	---Full list of particle effect dictionaries and effects by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/particleEffectsCompact.json  
	START_PARTICLE_FX_NON_LOOPED_ON_PED_BONE = function(effectName, ped, offsetX, offsetY, offsetZ, rotX, rotY, rotZ, boneIndex, scale, axisX, axisY, axisZ) return invoker.call(0x0E7E72961BA18619, effectName, ped, offsetX, offsetY, offsetZ, rotX, rotY, rotZ, boneIndex, scale, axisX, axisY, axisZ).bool end,
	---Full list of particle effect dictionaries and effects by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/particleEffectsCompact.json  
	START_NETWORKED_PARTICLE_FX_NON_LOOPED_ON_PED_BONE = function(effectName, ped, offsetX, offsetY, offsetZ, rotX, rotY, rotZ, boneIndex, scale, axisX, axisY, axisZ) return invoker.call(0xA41B6A43642AC2CF, effectName, ped, offsetX, offsetY, offsetZ, rotX, rotY, rotZ, boneIndex, scale, axisX, axisY, axisZ).bool end,
	---Starts a particle effect on an entity for example your player.  
	---  
	---Full list of particle effect dictionaries and effects by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/particleEffectsCompact.json  
	---  
	---Example:  
	---C#:  
	---Function.Call(Hash.REQUEST_NAMED_PTFX_ASSET, "scr_rcbarry2");                     Function.Call(Hash.USE_PARTICLE_FX_ASSET, "scr_rcbarry2");                             Function.Call(Hash.START_PARTICLE_FX_NON_LOOPED_ON_ENTITY, "scr_clown_appears", Game.Player.Character, 0.0, 0.0, -0.5, 0.0, 0.0, 0.0, 1.0, false, false, false);  
	---  
	---Internally this calls the same function as GRAPHICS::START_PARTICLE_FX_NON_LOOPED_ON_PED_BONE  
	---however it uses -1 for the specified bone index, so it should be possible to start a non looped fx on an entity bone using that native  
	---  
	----can confirm START_PARTICLE_FX_NON_LOOPED_ON_PED_BONE does NOT work on vehicle bones.  
	START_PARTICLE_FX_NON_LOOPED_ON_ENTITY = function(effectName, entity, offsetX, offsetY, offsetZ, rotX, rotY, rotZ, scale, axisX, axisY, axisZ) return invoker.call(0x0D53A3B8DA0809D2, effectName, entity, offsetX, offsetY, offsetZ, rotX, rotY, rotZ, scale, axisX, axisY, axisZ).bool end,
	---Full list of particle effect dictionaries and effects by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/particleEffectsCompact.json  
	START_NETWORKED_PARTICLE_FX_NON_LOOPED_ON_ENTITY = function(effectName, entity, offsetX, offsetY, offsetZ, rotX, rotY, rotZ, scale, axisX, axisY, axisZ) return invoker.call(0xC95EB1DB6E92113D, effectName, entity, offsetX, offsetY, offsetZ, rotX, rotY, rotZ, scale, axisX, axisY, axisZ).bool end,
	---Full list of particle effect dictionaries and effects by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/particleEffectsCompact.json  
	START_PARTICLE_FX_NON_LOOPED_ON_ENTITY_BONE = function(effectName, entity, offsetX, offsetY, offsetZ, rotX, rotY, rotZ, boneIndex, scale, axisX, axisY, axisZ) return invoker.call(0x02B1F2A72E0F5325, effectName, entity, offsetX, offsetY, offsetZ, rotX, rotY, rotZ, boneIndex, scale, axisX, axisY, axisZ).bool end,
	---only works on some fx's, not networked  
	SET_PARTICLE_FX_NON_LOOPED_COLOUR = function(r, g, b) invoker.call(0x26143A59EF48B262, r, g, b) end,
	---Usage example for C#:  
	---  
	---Function.Call(Hash.SET_PARTICLE_FX_NON_LOOPED_ALPHA, new InputArgument[] { 0.1f });  
	---  
	---Note: the argument alpha ranges from 0.0f-1.0f !  
	SET_PARTICLE_FX_NON_LOOPED_ALPHA = function(alpha) invoker.call(0x77168D722C58B2FC, alpha) end,
	---  
	SET_PARTICLE_FX_NON_LOOPED_SCALE = function(scale) invoker.call(0xB7EF5850C39FABCA, scale) end,
	---  
	SET_PARTICLE_FX_NON_LOOPED_EMITTER_SIZE = function(p0, p1, scale) invoker.call(0x1E2E01C00837D26E, p0, p1, scale) end,
	---Used only once in the scripts (taxi_clowncar)  
	SET_PARTICLE_FX_FORCE_VEHICLE_INTERIOR = function(toggle) invoker.call(0x8CDE909A0370BB3A, toggle) end,
	---GRAPHICS::START_PARTICLE_FX_LOOPED_AT_COORD("scr_fbi_falling_debris", 93.7743f, -749.4572f, 70.86904f, 0f, 0f, 0f, 0x3F800000, 0, 0, 0, 0)  
	---  
	---  
	---p11 seems to be always 0  
	---  
	---Full list of particle effect dictionaries and effects by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/particleEffectsCompact.json  
	START_PARTICLE_FX_LOOPED_AT_COORD = function(effectName, x, y, z, xRot, yRot, zRot, scale, xAxis, yAxis, zAxis, p11) return invoker.call(0xE184F4F0DC5910E7, effectName, x, y, z, xRot, yRot, zRot, scale, xAxis, yAxis, zAxis, p11).int end,
	---Full list of particle effect dictionaries and effects by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/particleEffectsCompact.json  
	START_PARTICLE_FX_LOOPED_ON_PED_BONE = function(effectName, ped, xOffset, yOffset, zOffset, xRot, yRot, zRot, boneIndex, scale, xAxis, yAxis, zAxis) return invoker.call(0xF28DA9F38CD1787C, effectName, ped, xOffset, yOffset, zOffset, xRot, yRot, zRot, boneIndex, scale, xAxis, yAxis, zAxis).int end,
	---Full list of particle effect dictionaries and effects by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/particleEffectsCompact.json  
	START_PARTICLE_FX_LOOPED_ON_ENTITY = function(effectName, entity, xOffset, yOffset, zOffset, xRot, yRot, zRot, scale, xAxis, yAxis, zAxis) return invoker.call(0x1AE42C1660FD6517, effectName, entity, xOffset, yOffset, zOffset, xRot, yRot, zRot, scale, xAxis, yAxis, zAxis).int end,
	---Full list of particle effect dictionaries and effects by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/particleEffectsCompact.json  
	START_PARTICLE_FX_LOOPED_ON_ENTITY_BONE = function(effectName, entity, xOffset, yOffset, zOffset, xRot, yRot, zRot, boneIndex, scale, xAxis, yAxis, zAxis) return invoker.call(0xC6EB449E33977F0B, effectName, entity, xOffset, yOffset, zOffset, xRot, yRot, zRot, boneIndex, scale, xAxis, yAxis, zAxis).int end,
	---Full list of particle effect dictionaries and effects by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/particleEffectsCompact.json  
	START_NETWORKED_PARTICLE_FX_LOOPED_ON_ENTITY = function(effectName, entity, xOffset, yOffset, zOffset, xRot, yRot, zRot, scale, xAxis, yAxis, zAxis, r, g, b, a) return invoker.call(0x6F60E89A7B64EE1D, effectName, entity, xOffset, yOffset, zOffset, xRot, yRot, zRot, scale, xAxis, yAxis, zAxis, r, g, b, a).int end,
	---Full list of particle effect dictionaries and effects by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/particleEffectsCompact.json  
	START_NETWORKED_PARTICLE_FX_LOOPED_ON_ENTITY_BONE = function(effectName, entity, xOffset, yOffset, zOffset, xRot, yRot, zRot, boneIndex, scale, xAxis, yAxis, zAxis, r, g, b, a) return invoker.call(0xDDE23F30CC5A0F03, effectName, entity, xOffset, yOffset, zOffset, xRot, yRot, zRot, boneIndex, scale, xAxis, yAxis, zAxis, r, g, b, a).int end,
	---p1 is always 0 in the native scripts  
	STOP_PARTICLE_FX_LOOPED = function(ptfxHandle, p1) invoker.call(0x8F75998877616996, ptfxHandle, p1) end,
	---  
	REMOVE_PARTICLE_FX = function(ptfxHandle, p1) invoker.call(0xC401503DFE8D53CF, ptfxHandle, p1) end,
	---  
	REMOVE_PARTICLE_FX_FROM_ENTITY = function(entity) invoker.call(0xB8FEAEEBCC127425, entity) end,
	---  
	REMOVE_PARTICLE_FX_IN_RANGE = function(X, Y, Z, radius) invoker.call(0xDD19FA1C6D657305, X, Y, Z, radius) end,
	---  
	FORCE_PARTICLE_FX_IN_VEHICLE_INTERIOR = function(p0, p1) invoker.call(0xBA0127DA25FD54C9, p0, p1) end,
	---  
	DOES_PARTICLE_FX_LOOPED_EXIST = function(ptfxHandle) return invoker.call(0x74AFEF0D2E1E409B, ptfxHandle).bool end,
	---  
	SET_PARTICLE_FX_LOOPED_OFFSETS = function(ptfxHandle, x, y, z, rotX, rotY, rotZ) invoker.call(0xF7DDEBEC43483C43, ptfxHandle, x, y, z, rotX, rotY, rotZ) end,
	---  
	SET_PARTICLE_FX_LOOPED_EVOLUTION = function(ptfxHandle, propertyName, amount, noNetwork) invoker.call(0x5F0C4B5B1C393BE2, ptfxHandle, propertyName, amount, noNetwork) end,
	---only works on some fx's  
	---  
	---p4 = 0  
	SET_PARTICLE_FX_LOOPED_COLOUR = function(ptfxHandle, r, g, b, p4) invoker.call(0x7F8F65877F88783B, ptfxHandle, r, g, b, p4) end,
	---  
	SET_PARTICLE_FX_LOOPED_ALPHA = function(ptfxHandle, alpha) invoker.call(0x726845132380142E, ptfxHandle, alpha) end,
	---  
	SET_PARTICLE_FX_LOOPED_SCALE = function(ptfxHandle, scale) invoker.call(0xB44250AAA456492D, ptfxHandle, scale) end,
	---  
	SET_PARTICLE_FX_LOOPED_FAR_CLIP_DIST = function(ptfxHandle, range) invoker.call(0xDCB194B85EF7B541, ptfxHandle, range) end,
	---  
	_SET_PARTICLE_FX_LOOPED_CAMERA_BIAS = function(ptfxHandle, p1) invoker.call(0x4100BF0346A8D2C3, ptfxHandle, p1) end,
	---  
	SET_PARTICLE_FX_CAM_INSIDE_VEHICLE = function(p0) invoker.call(0xEEC4047028426510, p0) end,
	---  
	SET_PARTICLE_FX_CAM_INSIDE_NONPLAYER_VEHICLE = function(vehicle, p1) invoker.call(0xACEE6F360FC1F6B6, vehicle, p1) end,
	---  
	SET_PARTICLE_FX_SHOOTOUT_BOAT = function(p0) invoker.call(0x96EF97DAEB89BEF5, p0) end,
	---  
	CLEAR_PARTICLE_FX_SHOOTOUT_BOAT = function() invoker.call(0x2A251AA48B2B46DB) end,
	---  
	SET_PARTICLE_FX_BLOOD_SCALE = function(p0) invoker.call(0x908311265D42A820, p0) end,
	---  
	DISABLE_IN_WATER_PTFX = function(toggle) invoker.call(0xCFD16F0DB5A3535C, toggle) end,
	---  
	DISABLE_DOWNWASH_PTFX = function(toggle) invoker.call(0x5F6DF3D92271E8A1, toggle) end,
	---  
	SET_PARTICLE_FX_SLIPSTREAM_LODRANGE_SCALE = function(scale) invoker.call(0x2B40A97646381508, scale) end,
	---Creates cartoon effect when Michel smokes the weed  
	ENABLE_CLOWN_BLOOD_VFX = function(toggle) invoker.call(0xD821490579791273, toggle) end,
	---Creates a motion-blur sort of effect, this native does not seem to work, however by using the `START_SCREEN_EFFECT` native with `DrugsMichaelAliensFight` as the effect parameter, you should be able to get the effect.  
	ENABLE_ALIEN_BLOOD_VFX = function(toggle) invoker.call(0x9DCE1F0F78260875, toggle) end,
	---  
	SET_PARTICLE_FX_BULLET_IMPACT_SCALE = function(scale) invoker.call(0x27E32866E9A5C416, scale) end,
	---  
	SET_PARTICLE_FX_BULLET_IMPACT_LODRANGE_SCALE = function(p0) invoker.call(0xBB90E12CAC1DAB25, p0) end,
	---  
	SET_PARTICLE_FX_BULLET_TRACE_NO_ANGLE_REJECT = function(p0) invoker.call(0xCA4AE345A153D573, p0) end,
	---  
	SET_PARTICLE_FX_BANG_SCRAPE_LODRANGE_SCALE = function(p0) invoker.call(0x54E22EA2C1956A8D, p0) end,
	---  
	SET_PARTICLE_FX_FOOT_LODRANGE_SCALE = function(p0) invoker.call(0x949F397A288B28B3, p0) end,
	---Full list of particle effect dictionaries and effects by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/particleEffectsCompact.json  
	SET_PARTICLE_FX_FOOT_OVERRIDE_NAME = function(p0) invoker.call(0xBA3D194057C79A7B, p0) end,
	---  
	SET_SKIDMARK_RANGE_SCALE = function(scale) invoker.call(0x5DBF05DB5926D089, scale) end,
	---  
	SET_PTFX_FORCE_VEHICLE_INTERIOR_FLAG = function(p0) invoker.call(0xC6730E0D14E50703, p0) end,
	---  
	_REGISTER_PTFX_FOG_VOLUME = function(posX, posY, posZ, range, density) invoker.call(0xDA256F9AEAC28331, posX, posY, posZ, range, density) end,
	---  
	REGISTER_POSTFX_BULLET_IMPACT = function(weaponWorldPosX, weaponWorldPosY, weaponWorldPosZ, intensity) invoker.call(0x170911F37F646F29, weaponWorldPosX, weaponWorldPosY, weaponWorldPosZ, intensity) end,
	---  
	FORCE_POSTFX_BULLET_IMPACTS_AFTER_HUD = function(p0) invoker.call(0x9B079E5221D984D3, p0) end,
	---From the b678d decompiled scripts:  
	---  
	--- GRAPHICS::USE_PARTICLE_FX_ASSET("FM_Mission_Controler");  
	--- GRAPHICS::USE_PARTICLE_FX_ASSET("scr_apartment_mp");  
	--- GRAPHICS::USE_PARTICLE_FX_ASSET("scr_indep_fireworks");  
	--- GRAPHICS::USE_PARTICLE_FX_ASSET("scr_mp_cig_plane");  
	--- GRAPHICS::USE_PARTICLE_FX_ASSET("scr_mp_creator");  
	--- GRAPHICS::USE_PARTICLE_FX_ASSET("scr_ornate_heist");  
	--- GRAPHICS::USE_PARTICLE_FX_ASSET("scr_prison_break_heist_station");  
	---  
	---Full list of particle effect dictionaries and effects by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/particleEffectsCompact.json  
	USE_PARTICLE_FX_ASSET = function(name) invoker.call(0x6C38AF3693A69A91, name) end,
	---Full list of particle effect dictionaries and effects by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/particleEffectsCompact.json  
	SET_PARTICLE_FX_OVERRIDE = function(oldAsset, newAsset) invoker.call(0xEA1E2D93F6F75ED9, oldAsset, newAsset) end,
	---Resets the effect of SET_PARTICLE_FX_OVERRIDE  
	---  
	---Full list of particle effect dictionaries and effects by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/particleEffectsCompact.json  
	RESET_PARTICLE_FX_OVERRIDE = function(name) invoker.call(0x89C8553DD3274AAE, name) end,
	---Returns ptfxHandle  
	---effectName: scr_sv_drag_burnout  
	_START_VEHICLE_PARTICLE_FX_LOOPED = function(vehicle, effectName, frontBack, leftRight, localOnly) return invoker.call(0xDF269BE2909E181A, vehicle, effectName, frontBack, leftRight, localOnly).int end,
	---  
	SET_WEATHER_PTFX_USE_OVERRIDE_SETTINGS = function(p0) invoker.call(0xA46B73FAA3460AE1, p0) end,
	---  
	SET_WEATHER_PTFX_OVERRIDE_CURR_LEVEL = function(p0) invoker.call(0xF78B803082D4386F, p0) end,
	---  
	WASH_DECALS_IN_RANGE = function(x, y, z, range, p4) invoker.call(0x9C30613D50A6ADEF, x, y, z, range, p4) end,
	---  
	WASH_DECALS_FROM_VEHICLE = function(vehicle, p1) invoker.call(0x5B712761429DBC14, vehicle, p1) end,
	---Fades nearby decals within the range specified  
	FADE_DECALS_IN_RANGE = function(x, y, z, p3, p4) invoker.call(0xD77EDADB0420E6E0, x, y, z, p3, p4) end,
	---Removes all decals in range from a position, it includes the bullet holes, blood pools, petrol...  
	REMOVE_DECALS_IN_RANGE = function(x, y, z, range) invoker.call(0x5D6B2D4830A67C62, x, y, z, range) end,
	---  
	REMOVE_DECALS_FROM_OBJECT = function(obj) invoker.call(0xCCF71CBDDF5B6CB9, obj) end,
	---  
	REMOVE_DECALS_FROM_OBJECT_FACING = function(obj, x, y, z) invoker.call(0xA6F6F70FDC6D144C, obj, x, y, z) end,
	---  
	REMOVE_DECALS_FROM_VEHICLE = function(vehicle) invoker.call(0xE91F1B65F2B48D57, vehicle) end,
	---decal types:  
	---  
	---public enum DecalTypes  
	---{  
	---    splatters_blood = 1010,  
	---    splatters_blood_dir = 1015,  
	---    splatters_blood_mist = 1017,  
	---    splatters_mud = 1020,  
	---    splatters_paint = 1030,  
	---    splatters_water = 1040,  
	---    splatters_water_hydrant = 1050,  
	---    splatters_blood2 = 1110,  
	---    weapImpact_metal = 4010,  
	---    weapImpact_concrete = 4020,  
	---    weapImpact_mattress = 4030,  
	---    weapImpact_mud = 4032,  
	---    weapImpact_wood = 4050,  
	---    weapImpact_sand = 4053,  
	---    weapImpact_cardboard = 4040,  
	---    weapImpact_melee_glass = 4100,  
	---    weapImpact_glass_blood = 4102,  
	---    weapImpact_glass_blood2 = 4104,  
	---    weapImpact_shotgun_paper = 4200,  
	---    weapImpact_shotgun_mattress,  
	---    weapImpact_shotgun_metal,  
	---    weapImpact_shotgun_wood,  
	---    weapImpact_shotgun_dirt,  
	---    weapImpact_shotgun_tvscreen,  
	---    weapImpact_shotgun_tvscreen2,  
	---    weapImpact_shotgun_tvscreen3,  
	---    weapImpact_melee_concrete = 4310,  
	---    weapImpact_melee_wood = 4312,  
	---    weapImpact_melee_metal = 4314,  
	---    burn1 = 4421,  
	---    burn2,  
	---    burn3,  
	---    burn4,  
	---    burn5,  
	---    bang_concrete_bang = 5000,  
	---    bang_concrete_bang2,  
	---    bang_bullet_bang,  
	---    bang_bullet_bang2 = 5004,  
	---    bang_glass = 5031,  
	---    bang_glass2,  
	---    solidPool_water = 9000,  
	---    solidPool_blood,  
	---    solidPool_oil,  
	---    solidPool_petrol,  
	---    solidPool_mud,  
	---    porousPool_water,  
	---    porousPool_blood,  
	---    porousPool_oil,  
	---    porousPool_petrol,  
	---    porousPool_mud,  
	---    porousPool_water_ped_drip,  
	---    liquidTrail_water = 9050  
	---}  
	ADD_DECAL = function(decalType, posX, posY, posZ, p4, p5, p6, p7, p8, p9, width, height, rCoef, gCoef, bCoef, opacity, timeout, p17, p18, p19) return invoker.call(0xB302244A1839BDAD, decalType, posX, posY, posZ, p4, p5, p6, p7, p8, p9, width, height, rCoef, gCoef, bCoef, opacity, timeout, p17, p18, p19).int end,
	---  
	ADD_PETROL_DECAL = function(x, y, z, groundLvl, width, transparency) return invoker.call(0x4F5212C7AD880DF8, x, y, z, groundLvl, width, transparency).int end,
	---  
	ADD_OIL_DECAL = function(x, y, z, groundLvl, width, transparency) return invoker.call(0x126D7F89FE859A5E, x, y, z, groundLvl, width, transparency).int end,
	---  
	START_PETROL_TRAIL_DECALS = function(p0) invoker.call(0x99AC7F0D8B9C893D, p0) end,
	---  
	ADD_PETROL_TRAIL_DECAL_INFO = function(x, y, z, p3) invoker.call(0x967278682CB6967A, x, y, z, p3) end,
	---  
	END_PETROL_TRAIL_DECALS = function() invoker.call(0x0A123435A26C36CD) end,
	---  
	REMOVE_DECAL = function(decal) invoker.call(0xED3F346429CCD659, decal) end,
	---  
	IS_DECAL_ALIVE = function(decal) return invoker.call(0xC694D74949CAFD0C, decal).bool end,
	---  
	GET_DECAL_WASH_LEVEL = function(decal) return invoker.call(0x323F647679A09103, decal).float end,
	---  
	SET_DISABLE_PETROL_DECALS_IGNITING_THIS_FRAME = function() invoker.call(0xD9454B5752C857DC) end,
	---  
	SET_DISABLE_PETROL_DECALS_RECYCLING_THIS_FRAME = function() invoker.call(0x27CFB1B1E078CB2D) end,
	---  
	SET_DISABLE_DECAL_RENDERING_THIS_FRAME = function() invoker.call(0x4B5CFC83122DF602) end,
	---  
	GET_IS_PETROL_DECAL_IN_RANGE = function(xCoord, yCoord, zCoord, radius) return invoker.call(0x2F09F7976C512404, xCoord, yCoord, zCoord, radius).bool end,
	---  
	PATCH_DECAL_DIFFUSE_MAP = function(decalType, textureDict, textureName) invoker.call(0x8A35C742130C6080, decalType, textureDict, textureName) end,
	---  
	UNPATCH_DECAL_DIFFUSE_MAP = function(decalType) invoker.call(0xB7ED70C49521A61D, decalType) end,
	---  
	MOVE_VEHICLE_DECALS = function(p0, p1) invoker.call(0x84C8D7C2D30D3280, p0, p1) end,
	---boneIndex is always chassis_dummy in the scripts. The x/y/z params are location relative to the chassis bone.  
	ADD_VEHICLE_CREW_EMBLEM = function(vehicle, ped, boneIndex, x1, x2, x3, y1, y2, y3, z1, z2, z3, scale, p13, alpha) return invoker.call(0x428BDCB9DA58DA53, vehicle, ped, boneIndex, x1, x2, x3, y1, y2, y3, z1, z2, z3, scale, p13, alpha).bool end,
	---  
	ABORT_VEHICLE_CREW_EMBLEM_REQUEST = function(p0) return invoker.call(0x82ACC484FFA3B05F, p0).bool end,
	---  
	REMOVE_VEHICLE_CREW_EMBLEM = function(vehicle, p1) invoker.call(0xD2300034310557E4, vehicle, p1) end,
	---  
	GET_VEHICLE_CREW_EMBLEM_REQUEST_STATE = function(vehicle, p1) return invoker.call(0xFE26117A5841B2FF, vehicle, p1).int end,
	---  
	DOES_VEHICLE_HAVE_CREW_EMBLEM = function(vehicle, p1) return invoker.call(0x060D935D3981A275, vehicle, p1).bool end,
	---  
	DISABLE_COMPOSITE_SHOTGUN_DECALS = function(toggle) invoker.call(0x0E4299C549F0D1F1, toggle) end,
	---  
	DISABLE_SCUFF_DECALS = function(toggle) invoker.call(0x02369D5C8A51FDCF, toggle) end,
	---  
	SET_DECAL_BULLET_IMPACT_RANGE_SCALE = function(p0) invoker.call(0x46D1A61A21F566FC, p0) end,
	---  
	OVERRIDE_INTERIOR_SMOKE_NAME = function(name) invoker.call(0x2A2A52824DB96700, name) end,
	---  
	OVERRIDE_INTERIOR_SMOKE_LEVEL = function(level) invoker.call(0x1600FD8CF72EBC12, level) end,
	---  
	OVERRIDE_INTERIOR_SMOKE_END = function() invoker.call(0xEFB55E7C25D3B3BE) end,
	---Used with 'NG_filmnoir_BW{01,02}' timecycles and the "NOIR_FILTER_SOUNDS" audioref.  
	REGISTER_NOIR_LENS_EFFECT = function() invoker.call(0xA44FF770DFBC5DAE) end,
	---  
	DISABLE_VEHICLE_DISTANTLIGHTS = function(toggle) invoker.call(0xC9F98AC1884E73A2, toggle) end,
	---  
	RENDER_SHADOWED_LIGHTS_WITH_NO_SHADOWS = function(p0) invoker.call(0x03300B57FCAC6DDB, p0) end,
	---  
	REQUEST_EARLY_LIGHT_CHECK = function() invoker.call(0x98EDF76A7271E4F2) end,
	---Forces footstep tracks on all surfaces.  
	USE_SNOW_FOOT_VFX_WHEN_UNSHELTERED = function(toggle) invoker.call(0xAEEDAD1420C65CC0, toggle) end,
	---  
	_FORCE_ALLOW_SNOW_FOOT_VFX_ON_ICE = function(toggle) invoker.call(0xA342A3763B3AFB6C, toggle) end,
	---Forces vehicle trails on all surfaces.  
	USE_SNOW_WHEEL_VFX_WHEN_UNSHELTERED = function(toggle) invoker.call(0x4CC7F0FEA5283FE0, toggle) end,
	---  
	DISABLE_REGION_VFX = function(p0) invoker.call(0xEFD97FF47B745B8D, p0) end,
	---  
	_FORCE_GROUND_SNOW_PASS = function(toggle) invoker.call(0x6E9EF3A33C8899F8, toggle) end,
	---Only one match in the scripts:  
	---  
	---GRAPHICS::PRESET_INTERIOR_AMBIENT_CACHE("int_carrier_hanger");  
	PRESET_INTERIOR_AMBIENT_CACHE = function(timecycleModifierName) invoker.call(0xD7021272EB0A451E, timecycleModifierName) end,
	---Loads the specified timecycle modifier. Modifiers are defined separately in another file (e.g. "timecycle_mods_1.xml")  
	---  
	---Parameters:  
	---modifierName - The modifier to load (e.g. "V_FIB_IT3", "scanline_cam", etc.)  
	---  
	---Full list of timecycle modifiers by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/timecycleModifiers.json  
	SET_TIMECYCLE_MODIFIER = function(modifierName) invoker.call(0x2C933ABF17A1DF41, modifierName) end,
	---  
	SET_TIMECYCLE_MODIFIER_STRENGTH = function(strength) invoker.call(0x82E7FFCD5B2326B3, strength) end,
	---Full list of timecycle modifiers by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/timecycleModifiers.json  
	SET_TRANSITION_TIMECYCLE_MODIFIER = function(modifierName, transition) invoker.call(0x3BCF567485E1971C, modifierName, transition) end,
	---  
	SET_TRANSITION_OUT_OF_TIMECYCLE_MODIFIER = function(strength) invoker.call(0x1CBA05AE7BD7EE05, strength) end,
	---  
	CLEAR_TIMECYCLE_MODIFIER = function() invoker.call(0x0F07E7745A236711) end,
	---Only use for this in the PC scripts is:  
	---  
	---if (GRAPHICS::GET_TIMECYCLE_MODIFIER_INDEX() != -1)  
	GET_TIMECYCLE_MODIFIER_INDEX = function() return invoker.call(0xFDF3D97C674AFB66).int end,
	---  
	GET_TIMECYCLE_TRANSITION_MODIFIER_INDEX = function() return invoker.call(0x459FD2C8D0AB78BC).int end,
	---  
	GET_IS_TIMECYCLE_TRANSITIONING_OUT = function() return invoker.call(0x98D18905BF723B99).bool end,
	---  
	PUSH_TIMECYCLE_MODIFIER = function() invoker.call(0x58F735290861E6B4) end,
	---  
	POP_TIMECYCLE_MODIFIER = function() invoker.call(0x3C8938D7D872211E) end,
	---  
	SET_CURRENT_PLAYER_TCMODIFIER = function(modifierName) invoker.call(0xBBF327DED94E4DEB, modifierName) end,
	---  
	SET_PLAYER_TCMODIFIER_TRANSITION = function(value) invoker.call(0xBDEB86F4D5809204, value) end,
	---  
	SET_NEXT_PLAYER_TCMODIFIER = function(modifierName) invoker.call(0xBF59707B3E5ED531, modifierName) end,
	---  
	ADD_TCMODIFIER_OVERRIDE = function(modifierName1, modifierName2) invoker.call(0x1A8E2C8B9CF4549C, modifierName1, modifierName2) end,
	---  
	CLEAR_ALL_TCMODIFIER_OVERRIDES = function(p0) invoker.call(0x15E33297C3E8DC60, p0) end,
	---Full list of timecycle modifiers by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/timecycleModifiers.json  
	SET_EXTRA_TCMODIFIER = function(modifierName) invoker.call(0x5096FD9CCB49056D, modifierName) end,
	---Clears the secondary timecycle modifier usually set with _SET_EXTRA_TIMECYCLE_MODIFIER  
	CLEAR_EXTRA_TCMODIFIER = function() invoker.call(0x92CCC17A7A2285DA) end,
	---See GET_TIMECYCLE_MODIFIER_INDEX for use, works the same just for the secondary timecycle modifier.  
	---Returns an integer representing the Timecycle modifier  
	GET_EXTRA_TCMODIFIER = function() return invoker.call(0xBB0527EC6341496D).int end,
	---The same as SET_TIMECYCLE_MODIFIER_STRENGTH but for the secondary timecycle modifier.  
	ENABLE_MOON_CYCLE_OVERRIDE = function(strength) invoker.call(0x2C328AF17210F009, strength) end,
	---Resets the extra timecycle modifier strength normally set with 0x2C328AF17210F009  
	DISABLE_MOON_CYCLE_OVERRIDE = function() invoker.call(0x2BF72AD5B41AA739) end,
	---  
	REQUEST_SCALEFORM_MOVIE = function(scaleformName) return invoker.call(0x11FE353CF9733E6F, scaleformName).int end,
	---Another REQUEST_SCALEFORM_MOVIE equivalent.  
	REQUEST_SCALEFORM_MOVIE_WITH_IGNORE_SUPER_WIDESCREEN = function(scaleformName) return invoker.call(0x65E7E78842E74CDB, scaleformName).int end,
	---  
	REQUEST_SCALEFORM_MOVIE_INSTANCE = function(scaleformName) return invoker.call(0xC514489CFB8AF806, scaleformName).int end,
	---Similar to REQUEST_SCALEFORM_MOVIE, but seems to be some kind of "interactive" scaleform movie?  
	---  
	---These seem to be the only scaleforms ever requested by this native:  
	---"breaking_news"  
	---"desktop_pc"  
	---"ECG_MONITOR"  
	---"Hacking_PC"  
	---"TEETH_PULLING"  
	---  
	---Note: Unless this hash is out-of-order, this native is next-gen only.  
	---  
	REQUEST_SCALEFORM_MOVIE_SKIP_RENDER_WHILE_PAUSED = function(scaleformName) return invoker.call(0xBD06C611BB9048C2, scaleformName).int end,
	---  
	HAS_SCALEFORM_MOVIE_LOADED = function(scaleformHandle) return invoker.call(0x85F01B8D5B90570E, scaleformHandle).bool end,
	---  
	_HAS_SCALEFORM_MOVIE_NAMED_LOADED = function(scaleformHandle, scaleformName) return invoker.call(0x9743BCCF7CD6E1F6, scaleformHandle, scaleformName).bool end,
	---val is 1-20 (0 will return false)  
	IS_ACTIVE_SCALEFORM_MOVIE_DELETING = function(val) return invoker.call(0x2FCB133CA50A49EB, val).bool end,
	---val is 1-20. Return is related to INSTRUCTIONAL_BUTTONS, COLOUR_SWITCHER_02, etc?  
	IS_SCALEFORM_MOVIE_DELETING = function(val) return invoker.call(0x86255B1FC929E33E, val).bool end,
	---Only values used in the scripts are:  
	---  
	---"heist_mp"  
	---"heistmap_mp"  
	---"instructional_buttons"  
	---"heist_pre"  
	HAS_SCALEFORM_MOVIE_FILENAME_LOADED = function(scaleformName) return invoker.call(0x0C1C5D756FB5F337, scaleformName).bool end,
	---  
	HAS_SCALEFORM_CONTAINER_MOVIE_LOADED_INTO_PARENT = function(scaleformHandle) return invoker.call(0x8217150E1217EBFD, scaleformHandle).bool end,
	---  
	SET_SCALEFORM_MOVIE_AS_NO_LONGER_NEEDED = function(scaleformHandle) invoker.call(0x1D132D614DD86811, scaleformHandle) end,
	---  
	_SET_SCALEFORM_MOVIE_NAMED_AS_NO_LONGER_NEEDED = function(scaleformHandle, scaleformName) invoker.call(0x2FDFB1B04C76E9C3, scaleformHandle, scaleformName) end,
	---  
	SET_SCALEFORM_MOVIE_TO_USE_SYSTEM_TIME = function(scaleform, toggle) invoker.call(0x6D8EB211944DCE08, scaleform, toggle) end,
	---  
	SET_SCALEFORM_MOVIE_TO_USE_LARGE_RT = function(scaleformHandle, toggle) invoker.call(0x32F34FF7F617643B, scaleformHandle, toggle) end,
	---This native is used in some casino scripts to fit the scaleform in the rendertarget.  
	SET_SCALEFORM_MOVIE_TO_USE_SUPER_LARGE_RT = function(scaleformHandle, toggle) invoker.call(0xE6A9F00D4240B519, scaleformHandle, toggle) end,
	---  
	DRAW_SCALEFORM_MOVIE = function(scaleformHandle, x, y, width, height, red, green, blue, alpha, p9) invoker.call(0x54972ADAF0294A93, scaleformHandle, x, y, width, height, red, green, blue, alpha, p9) end,
	---unk is not used so no need  
	DRAW_SCALEFORM_MOVIE_FULLSCREEN = function(scaleform, red, green, blue, alpha, p5) invoker.call(0x0DF606929C105BE1, scaleform, red, green, blue, alpha, p5) end,
	---  
	DRAW_SCALEFORM_MOVIE_FULLSCREEN_MASKED = function(scaleform1, scaleform2, red, green, blue, alpha) invoker.call(0xCF537FDE4FBD4CE5, scaleform1, scaleform2, red, green, blue, alpha) end,
	---  
	DRAW_SCALEFORM_MOVIE_3D = function(scaleform, posX, posY, posZ, rotX, rotY, rotZ, p7, p8, p9, scaleX, scaleY, scaleZ, rotationOrder) invoker.call(0x87D51D72255D4E78, scaleform, posX, posY, posZ, rotX, rotY, rotZ, p7, p8, p9, scaleX, scaleY, scaleZ, rotationOrder) end,
	---  
	DRAW_SCALEFORM_MOVIE_3D_SOLID = function(scaleform, posX, posY, posZ, rotX, rotY, rotZ, p7, p8, p9, scaleX, scaleY, scaleZ, rotationOrder) invoker.call(0x1CE592FDC749D6F5, scaleform, posX, posY, posZ, rotX, rotY, rotZ, p7, p8, p9, scaleX, scaleY, scaleZ, rotationOrder) end,
	---Calls the Scaleform function.  
	CALL_SCALEFORM_MOVIE_METHOD = function(scaleform, method) invoker.call(0xFBD96D87AC96D533, scaleform, method) end,
	---Calls the Scaleform function and passes the parameters as floats.  
	---  
	---The number of parameters passed to the function varies, so the end of the parameter list is represented by -1.0.  
	CALL_SCALEFORM_MOVIE_METHOD_WITH_NUMBER = function(scaleform, methodName, param1, param2, param3, param4, param5) invoker.call(0xD0837058AE2E4BEE, scaleform, methodName, param1, param2, param3, param4, param5) end,
	---Calls the Scaleform function and passes the parameters as strings.  
	---  
	---The number of parameters passed to the function varies, so the end of the parameter list is represented by 0 (NULL).  
	CALL_SCALEFORM_MOVIE_METHOD_WITH_STRING = function(scaleform, methodName, param1, param2, param3, param4, param5) invoker.call(0x51BC1ED3CC44E8F7, scaleform, methodName, param1, param2, param3, param4, param5) end,
	---Calls the Scaleform function and passes both float and string parameters (in their respective order).  
	---  
	---The number of parameters passed to the function varies, so the end of the float parameters is represented by -1.0, and the end of the string parameters is represented by 0 (NULL).  
	---  
	---NOTE: The order of parameters in the function prototype is important! All float parameters must come first, followed by the string parameters.  
	---  
	---Examples:  
	---// function MY_FUNCTION(floatParam1, floatParam2, stringParam)  
	---GRAPHICS::CALL_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING(scaleform, "MY_FUNCTION", 10.0, 20.0, -1.0, -1.0, -1.0, "String param", 0, 0, 0, 0);  
	---  
	---// function MY_FUNCTION_2(floatParam, stringParam1, stringParam2)  
	---GRAPHICS::CALL_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING(scaleform, "MY_FUNCTION_2", 10.0, -1.0, -1.0, -1.0, -1.0, "String param #1", "String param #2", 0, 0, 0);  
	CALL_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING = function(scaleform, methodName, floatParam1, floatParam2, floatParam3, floatParam4, floatParam5, stringParam1, stringParam2, stringParam3, stringParam4, stringParam5) invoker.call(0xEF662D8D57E290B1, scaleform, methodName, floatParam1, floatParam2, floatParam3, floatParam4, floatParam5, stringParam1, stringParam2, stringParam3, stringParam4, stringParam5) end,
	---Pushes a function from the Hud component Scaleform onto the stack. Same behavior as GRAPHICS::BEGIN_SCALEFORM_MOVIE_METHOD, just a hud component id instead of a Scaleform.  
	---  
	---Known components:  
	---19 - MP_RANK_BAR  
	---20 - HUD_DIRECTOR_MODE  
	---  
	---This native requires more research - all information can be found inside of 'hud.gfx'. Using a decompiler, the different components are located under "scripts\__Packages\com\rockstargames\gtav\hud\hudComponents" and "scripts\__Packages\com\rockstargames\gtav\Multiplayer".  
	BEGIN_SCALEFORM_SCRIPT_HUD_MOVIE_METHOD = function(hudComponent, methodName) return invoker.call(0x98C494FD5BDFBFD5, hudComponent, methodName).bool end,
	---Push a function from the Scaleform onto the stack  
	---  
	BEGIN_SCALEFORM_MOVIE_METHOD = function(scaleform, methodName) return invoker.call(0xF6E48914C7A8694E, scaleform, methodName).bool end,
	---Starts frontend (pause menu) scaleform movie methods.  
	---This can be used when you want to make custom frontend menus, and customize things like images or text in the menus etc.  
	---Use `BEGIN_SCALEFORM_MOVIE_METHOD_ON_FRONTEND_HEADER` for header scaleform functions.  
	BEGIN_SCALEFORM_MOVIE_METHOD_ON_FRONTEND = function(methodName) return invoker.call(0xAB58C27C2E6123C6, methodName).bool end,
	---Starts frontend (pause menu) scaleform movie methods for header options.  
	---Use `BEGIN_SCALEFORM_MOVIE_METHOD_ON_FRONTEND` to customize the content inside the frontend menus.  
	BEGIN_SCALEFORM_MOVIE_METHOD_ON_FRONTEND_HEADER = function(methodName) return invoker.call(0xB9449845F73F5E9C, methodName).bool end,
	---Pops and calls the Scaleform function on the stack  
	END_SCALEFORM_MOVIE_METHOD = function() invoker.call(0xC6796A8FFA375E53) end,
	---  
	END_SCALEFORM_MOVIE_METHOD_RETURN_VALUE = function() return invoker.call(0xC50AA39A577AF886).int end,
	---methodReturn: The return value of this native: END_SCALEFORM_MOVIE_METHOD_RETURN_VALUE  
	---Returns true if the return value of a scaleform function is ready to be collected (using GET_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_STRING or GET_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_INT).  
	IS_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_READY = function(methodReturn) return invoker.call(0x768FF8961BA904D6, methodReturn).bool end,
	---methodReturn: The return value of this native: END_SCALEFORM_MOVIE_METHOD_RETURN_VALUE  
	---Used to get a return value from a scaleform function. Returns an int in the same way GET_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_STRING returns a string.  
	GET_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_INT = function(methodReturn) return invoker.call(0x2DE7EFA66B906036, methodReturn).int end,
	---methodReturn: The return value of this native: END_SCALEFORM_MOVIE_METHOD_RETURN_VALUE  
	GET_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_BOOL = function(methodReturn) return invoker.call(0xD80A80346A45D761, methodReturn).bool end,
	---methodReturn: The return value of this native: END_SCALEFORM_MOVIE_METHOD_RETURN_VALUE  
	---Used to get a return value from a scaleform function. Returns a string in the same way GET_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_INT returns an int.  
	GET_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_STRING = function(methodReturn) return invoker.call(0xE1E258829A885245, methodReturn).str end,
	---Pushes an integer for the Scaleform function onto the stack.  
	SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT = function(value) invoker.call(0xC3D0841A0CC546A6, value) end,
	---Pushes a float for the Scaleform function onto the stack.  
	SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT = function(value) invoker.call(0xD69736AAE04DB51A, value) end,
	---Pushes a boolean for the Scaleform function onto the stack.  
	SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL = function(value) invoker.call(0xC58424BA936EB458, value) end,
	---Called prior to adding a text component to the UI. After doing so, GRAPHICS::END_TEXT_COMMAND_SCALEFORM_STRING is called.  
	---  
	---Examples:  
	---GRAPHICS::BEGIN_TEXT_COMMAND_SCALEFORM_STRING("NUMBER");  
	---HUD::ADD_TEXT_COMPONENT_INTEGER(MISC::ABSI(a_1));  
	---GRAPHICS::END_TEXT_COMMAND_SCALEFORM_STRING();  
	---  
	---GRAPHICS::BEGIN_TEXT_COMMAND_SCALEFORM_STRING("STRING");  
	---HUD::ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME(a_2);  
	---GRAPHICS::END_TEXT_COMMAND_SCALEFORM_STRING();  
	---  
	---GRAPHICS::BEGIN_TEXT_COMMAND_SCALEFORM_STRING("STRTNM2");  
	---HUD::ADD_TEXT_COMPONENT_SUBSTRING_TEXT_LABEL_HASH_KEY(v_3);  
	---HUD::ADD_TEXT_COMPONENT_SUBSTRING_TEXT_LABEL_HASH_KEY(v_4);  
	---GRAPHICS::END_TEXT_COMMAND_SCALEFORM_STRING();  
	---  
	---GRAPHICS::BEGIN_TEXT_COMMAND_SCALEFORM_STRING("STRTNM1");  
	---HUD::ADD_TEXT_COMPONENT_SUBSTRING_TEXT_LABEL_HASH_KEY(v_3);  
	---GRAPHICS::END_TEXT_COMMAND_SCALEFORM_STRING();  
	BEGIN_TEXT_COMMAND_SCALEFORM_STRING = function(componentType) invoker.call(0x80338406F3475E55, componentType) end,
	---  
	END_TEXT_COMMAND_SCALEFORM_STRING = function() invoker.call(0x362E2D3FE93A9959) end,
	---Same as END_TEXT_COMMAND_SCALEFORM_STRING but does not perform HTML conversion for text tokens.  
	END_TEXT_COMMAND_UNPARSED_SCALEFORM_STRING = function() invoker.call(0xAE4E8157D9ECF087) end,
	---Same as SCALEFORM_MOVIE_METHOD_ADD_PARAM_TEXTURE_NAME_STRING  
	---Both SCALEFORM_MOVIE_METHOD_ADD_PARAM_TEXTURE_NAME_STRING / _SCALEFORM_MOVIE_METHOD_ADD_PARAM_TEXTURE_NAME_STRING_2 works, but _SCALEFORM_MOVIE_METHOD_ADD_PARAM_TEXTURE_NAME_STRING_2 is usually used for "name" (organisation, players..).  
	SCALEFORM_MOVIE_METHOD_ADD_PARAM_LITERAL_STRING = function(string) invoker.call(0x77FE3402004CD1B0, string) end,
	---  
	SCALEFORM_MOVIE_METHOD_ADD_PARAM_TEXTURE_NAME_STRING = function(string) invoker.call(0xBA7148484BD90365, string) end,
	---  
	SCALEFORM_MOVIE_METHOD_ADD_PARAM_PLAYER_NAME_STRING = function(string) invoker.call(0xE83A3E3557A56640, string) end,
	---  
	DOES_LATEST_BRIEF_STRING_EXIST = function(p0) return invoker.call(0x5E657EF1099EDD65, p0).bool end,
	---  
	SCALEFORM_MOVIE_METHOD_ADD_PARAM_LATEST_BRIEF_STRING = function(value) invoker.call(0xEC52C631A1831C03, value) end,
	---  
	REQUEST_SCALEFORM_SCRIPT_HUD_MOVIE = function(hudComponent) invoker.call(0x9304881D6F6537EA, hudComponent) end,
	---  
	HAS_SCALEFORM_SCRIPT_HUD_MOVIE_LOADED = function(hudComponent) return invoker.call(0xDF6E5987D2B4D140, hudComponent).bool end,
	---  
	REMOVE_SCALEFORM_SCRIPT_HUD_MOVIE = function(hudComponent) invoker.call(0xF44A5456AC3F4F97, hudComponent) end,
	---  
	PASS_KEYBOARD_INPUT_TO_SCALEFORM = function(scaleformHandle) return invoker.call(0xD1C7CB175E012964, scaleformHandle).bool end,
	---  
	SET_TV_CHANNEL = function(channel) invoker.call(0xBAABBB23EB6E484E, channel) end,
	---  
	GET_TV_CHANNEL = function() return invoker.call(0xFC1E275A90D39995).int end,
	---  
	SET_TV_VOLUME = function(volume) invoker.call(0x2982BF73F66E9DDC, volume) end,
	---  
	GET_TV_VOLUME = function() return invoker.call(0x2170813D3DD8661B).float end,
	---All calls to this native are preceded by calls to GRAPHICS::SET_SCRIPT_GFX_DRAW_ORDER and GRAPHICS::SET_SCRIPT_GFX_DRAW_BEHIND_PAUSEMENU, respectively.  
	---  
	---"act_cinema.ysc", line 1483:  
	---HUD::SET_HUD_COMPONENT_POSITION(15, 0.0, -0.0375);  
	---HUD::SET_TEXT_RENDER_ID(l_AE);  
	---GRAPHICS::SET_SCRIPT_GFX_DRAW_ORDER(4);  
	---GRAPHICS::SET_SCRIPT_GFX_DRAW_BEHIND_PAUSEMENU(1);  
	---if (GRAPHICS::IS_TVSHOW_CURRENTLY_PLAYING(${movie_arthouse})) {  
	---    GRAPHICS::DRAW_TV_CHANNEL(0.5, 0.5, 0.7375, 1.0, 0.0, 255, 255, 255, 255);  
	---} else {   
	---    GRAPHICS::DRAW_TV_CHANNEL(0.5, 0.5, 1.0, 1.0, 0.0, 255, 255, 255, 255);  
	---}  
	---  
	---"am_mp_property_int.ysc", line 102545:  
	---if (ENTITY::DOES_ENTITY_EXIST(a_2._f3)) {  
	---    if (HUD::IS_NAMED_RENDERTARGET_LINKED(ENTITY::GET_ENTITY_MODEL(a_2._f3))) {  
	---        HUD::SET_TEXT_RENDER_ID(a_2._f1);  
	---        GRAPHICS::SET_SCRIPT_GFX_DRAW_ORDER(4);  
	---        GRAPHICS::SET_SCRIPT_GFX_DRAW_BEHIND_PAUSEMENU(1);  
	---        GRAPHICS::DRAW_TV_CHANNEL(0.5, 0.5, 1.0, 1.0, 0.0, 255, 255, 255, 255);  
	---        if (GRAPHICS::GET_TV_CHANNEL() == -1) {  
	---            sub_a8fa5(a_2, 1);  
	---        } else {   
	---            sub_a8fa5(a_2, 1);  
	---            GRAPHICS::ATTACH_TV_AUDIO_TO_ENTITY(a_2._f3);  
	---        }  
	---        HUD::SET_TEXT_RENDER_ID(HUD::GET_DEFAULT_SCRIPT_RENDERTARGET_RENDER_ID());  
	---    }  
	---}  
	---  
	DRAW_TV_CHANNEL = function(xPos, yPos, xScale, yScale, rotation, red, green, blue, alpha) invoker.call(0xFDDC2B4ED3C69DF0, xPos, yPos, xScale, yScale, rotation, red, green, blue, alpha) end,
	---Loads specified video sequence into the TV Channel  
	---TV_Channel ranges from 0-2  
	---VideoSequence can be any of the following:  
	---"PL_STD_CNT" CNT Standard Channel  
	---"PL_STD_WZL" Weazel Standard Channel  
	---"PL_LO_CNT"  
	---"PL_LO_WZL"  
	---"PL_SP_WORKOUT"  
	---"PL_SP_INV" - Jay Norris Assassination Mission Fail  
	---"PL_SP_INV_EXP" - Jay Norris Assassination Mission Success  
	---"PL_LO_RS" - Righteous Slaughter Ad  
	---"PL_LO_RS_CUTSCENE" - Righteous Slaughter Cut-scene  
	---"PL_SP_PLSH1_INTRO"  
	---"PL_LES1_FAME_OR_SHAME"  
	---"PL_STD_WZL_FOS_EP2"  
	---"PL_MP_WEAZEL" - Weazel Logo on loop  
	---"PL_MP_CCTV" - Generic CCTV loop  
	---  
	---Restart:  
	---0=video sequence continues as normal  
	---1=sequence restarts from beginning every time that channel is selected  
	---  
	---  
	---The above playlists work as intended, and are commonly used, but there are many more playlists, as seen in `tvplaylists.xml`. A pastebin below outlines all playlists, they will be surronded by the name tag I.E. (<Name>PL_STD_CNT</Name> = PL_STD_CNT).  
	---https://pastebin.com/zUzGB6h7  
	SET_TV_CHANNEL_PLAYLIST = function(tvChannel, playlistName, restart) invoker.call(0xF7B38B8305F1FE8B, tvChannel, playlistName, restart) end,
	---  
	SET_TV_CHANNEL_PLAYLIST_AT_HOUR = function(tvChannel, playlistName, hour) invoker.call(0x2201C576FACAEBE8, tvChannel, playlistName, hour) end,
	---Does not actually return anything.  
	_SET_TV_CHANNEL_PLAYLIST_DIRTY = function(tvChannel, p1) return invoker.call(0xEE831F15A8D0D94A, tvChannel, p1) end,
	---  
	CLEAR_TV_CHANNEL_PLAYLIST = function(tvChannel) invoker.call(0xBEB3D46BB7F043C0, tvChannel) end,
	---  
	IS_PLAYLIST_ON_CHANNEL = function(tvChannel, p1) return invoker.call(0x1F710BFF7DAE6261, tvChannel, p1).bool end,
	---  
	IS_TVSHOW_CURRENTLY_PLAYING = function(videoCliphash) return invoker.call(0x0AD973CA1E077B60, videoCliphash).bool end,
	---  
	ENABLE_MOVIE_KEYFRAME_WAIT = function(toggle) invoker.call(0x74C180030FDE4B69, toggle) end,
	---  
	SET_TV_PLAYER_WATCHING_THIS_FRAME = function(p0) invoker.call(0xD1C55B110E4DF534, p0) end,
	---  
	GET_CURRENT_TV_CLIP_NAMEHASH = function() return invoker.call(0x30432A0118736E00).int end,
	---  
	ENABLE_MOVIE_SUBTITLES = function(toggle) invoker.call(0x873FA65C778AD970, toggle) end,
	---  
	UI3DSCENE_IS_AVAILABLE = function() return invoker.call(0xD3A10FC7FD8D98CD).bool end,
	---All presets can be found in common\data\ui\uiscenes.meta  
	UI3DSCENE_PUSH_PRESET = function(presetName) return invoker.call(0xF1CEA8A4198D8E9A, presetName).bool end,
	---It's called after UI3DSCENE_IS_AVAILABLE and UI3DSCENE_PUSH_PRESET  
	---  
	---presetName was always "CELEBRATION_WINNER"  
	---All presets can be found in common\data\ui\uiscenes.meta  
	UI3DSCENE_ASSIGN_PED_TO_SLOT = function(presetName, ped, slot, posX, posY, posZ) return invoker.call(0x98C4FE6EC34154CA, presetName, ped, slot, posX, posY, posZ).bool end,
	---  
	UI3DSCENE_CLEAR_PATCHED_DATA = function() invoker.call(0x7A42B2E236E71415) end,
	---  
	UI3DSCENE_MAKE_PUSHED_PRESET_PERSISTENT = function(toggle) invoker.call(0x108BE26959A9D9BB, toggle) end,
	---This native enables/disables the gold putting grid display (https://i.imgur.com/TC6cku6.png).  
	---This requires these two natives to be called as well to configure the grid: `TERRAINGRID_SET_PARAMS` and `TERRAINGRID_SET_COLOURS`.  
	TERRAINGRID_ACTIVATE = function(toggle) invoker.call(0xA356990E161C9E65, toggle) end,
	---This native is used along with these two natives: `TERRAINGRID_ACTIVATE` and `TERRAINGRID_SET_COLOURS`.  
	---This native configures the location, size, rotation, normal height, and the difference ratio between min, normal and max.  
	---  
	---All those natives combined they will output something like this: https://i.imgur.com/TC6cku6.png  
	---  
	---This native renders a box at the given position, with a special shader that renders a grid on world geometry behind it. This box does not have backface culling.  
	---The forward args here are a direction vector, something similar to what's returned by GET_ENTITY_FORWARD_VECTOR.  
	---normalHeight and heightDiff are used for positioning the color gradient of the grid, colors specified via TERRAINGRID_SET_COLOURS.  
	---  
	---Example with box superimposed on the image to demonstrate: https://i.imgur.com/wdqskxd.jpg  
	TERRAINGRID_SET_PARAMS = function(x, y, z, forwardX, forwardY, forwardZ, sizeX, sizeY, sizeZ, gridScale, glowIntensity, normalHeight, heightDiff) invoker.call(0x1C4FC5752BCD8E48, x, y, z, forwardX, forwardY, forwardZ, sizeX, sizeY, sizeZ, gridScale, glowIntensity, normalHeight, heightDiff) end,
	---This native is used along with these two natives: `TERRAINGRID_ACTIVATE` and `TERRAINGRID_SET_PARAMS`.  
	---This native sets the colors for the golf putting grid. the 'min...' values are for the lower areas that the grid covers, the 'max...' values are for the higher areas that the grid covers, all remaining values are for the 'normal' ground height.  
	---All those natives combined they will output something like this: https://i.imgur.com/TC6cku6.png  
	TERRAINGRID_SET_COLOURS = function(lowR, lowG, lowB, lowAlpha, r, g, b, alpha, highR, highG, highB, highAlpha) invoker.call(0x5CE62918F8D703C7, lowR, lowG, lowB, lowAlpha, r, g, b, alpha, highR, highG, highB, highAlpha) end,
	---duration - is how long to play the effect for in milliseconds. If 0, it plays the default length  
	---if loop is true, the effect won't stop until you call ANIMPOSTFX_STOP on it. (only loopable effects)  
	---  
	---Full list of animpostFX / screen effects by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animPostFxNamesCompact.json  
	ANIMPOSTFX_PLAY = function(effectName, duration, looped) invoker.call(0x2206BF9A37B7F724, effectName, duration, looped) end,
	---See ANIMPOSTFX_PLAY  
	---  
	---Full list of animpostFX / screen effects by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animPostFxNamesCompact.json  
	ANIMPOSTFX_STOP = function(effectName) invoker.call(0x068E835A1D0DC0E3, effectName) end,
	---See ANIMPOSTFX_PLAY  
	---  
	---Full list of animpostFX / screen effects by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animPostFxNamesCompact.json  
	ANIMPOSTFX_GET_CURRENT_TIME = function(effectName) return invoker.call(0xE35B38A27E8E7179, effectName).float end,
	---Returns whether the specified effect is active.  
	---See ANIMPOSTFX_PLAY  
	---  
	---Full list of animpostFX / screen effects by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animPostFxNamesCompact.json  
	ANIMPOSTFX_IS_RUNNING = function(effectName) return invoker.call(0x36AD3E690DA5ACEB, effectName).bool end,
	---Stops ALL currently playing effects.  
	ANIMPOSTFX_STOP_ALL = function() invoker.call(0xB4EDDC19532BFB85) end,
	---Stops the effect and sets a value (bool) in its data (+0x199) to false.  
	---See ANIMPOSTFX_PLAY  
	---  
	---Full list of animpostFX / screen effects by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animPostFxNamesCompact.json  
	ANIMPOSTFX_STOP_AND_FLUSH_REQUESTS = function(effectName) invoker.call(0xD2209BE128B5418C, effectName) end,
}
HUD={
	---Initializes the text entry for the the text next to a loading prompt. All natives for building UI texts can be used here  
	---  
	---  
	---e.g  
	---void StartLoadingMessage(char *text, int spinnerType = 3)  
	---  {  
	---     BEGIN_TEXT_COMMAND_BUSYSPINNER_ON("STRING");  
	---       ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME(text);  
	---       END_TEXT_COMMAND_BUSYSPINNER_ON(spinnerType);  
	---    }  
	---/*OR*/  
	--- void ShowLoadingMessage(char *text, int spinnerType = 3, int timeMs = 10000)  
	---  {  
	---     BEGIN_TEXT_COMMAND_BUSYSPINNER_ON("STRING");  
	---       ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME(text);  
	---       END_TEXT_COMMAND_BUSYSPINNER_ON(spinnerType);  
	---        WAIT(timeMs);  
	---     BUSYSPINNER_OFF();  
	--- }  
	---  
	---  
	---These are some localized strings used in the loading spinner.  
	---"PM_WAIT"                   = Please Wait  
	---"CELEB_WPLYRS"              = Waiting For Players.  
	---"CELL_SPINNER2"             = Scanning storage.  
	---"ERROR_CHECKYACHTNAME" = Registering your yacht's name. Please wait.  
	---"ERROR_CHECKPROFANITY"   = Checking your text for profanity. Please wait.  
	---"FM_COR_AUTOD"                        = Just spinner no text  
	---"FM_IHELP_WAT2"                        = Waiting for other players  
	---"FM_JIP_WAITO"                            = Game options are being set  
	---"FMMC_DOWNLOAD"                    = Downloading  
	---"FMMC_PLYLOAD"                         = Loading  
	---"FMMC_STARTTRAN"                    = Launching session  
	---"HUD_QUITTING"                           =  Quiting session  
	---"KILL_STRIP_IDM"                         = Waiting for to accept  
	---"MP_SPINLOADING"                      = Loading  
	BEGIN_TEXT_COMMAND_BUSYSPINNER_ON = function(string) invoker.call(0xABA17D7CE615ADBF, string) end,
	---enum eBusySpinnerType  
	---{  
	---	BUSY_SPINNER_LEFT,  
	---	BUSY_SPINNER_LEFT_2,  
	---	BUSY_SPINNER_LEFT_3,  
	---	BUSY_SPINNER_SAVE,  
	---	BUSY_SPINNER_RIGHT,  
	---};  
	END_TEXT_COMMAND_BUSYSPINNER_ON = function(busySpinnerType) invoker.call(0xBD12F8228410D9B4, busySpinnerType) end,
	---Removes the loading prompt at the bottom right of the screen.  
	BUSYSPINNER_OFF = function() invoker.call(0x10D373323E5B9C0D) end,
	---  
	PRELOAD_BUSYSPINNER = function() invoker.call(0xC65AB383CD91DF98) end,
	---  
	BUSYSPINNER_IS_ON = function() return invoker.call(0xD422FCC5F239A915).bool end,
	---  
	BUSYSPINNER_IS_DISPLAYING = function() return invoker.call(0xB2A592B04648A9CB).bool end,
	---  
	DISABLE_PAUSEMENU_SPINNER = function(p0) invoker.call(0x9245E81072704B8A, p0) end,
	---Shows the cursor on screen for one frame.  
	SET_MOUSE_CURSOR_THIS_FRAME = function() invoker.call(0xAAE7CE1D63167423) end,
	---Changes the mouse cursor's sprite.   
	---1 = Normal  
	---6 = Left Arrow  
	---7 = Right Arrow  
	SET_MOUSE_CURSOR_STYLE = function(spriteId) invoker.call(0x8DB8CFFD58B62552, spriteId) end,
	---Shows/hides the frontend cursor on the pause menu or similar menus.  
	---Clicking off and then on the game window will show it again.  
	SET_MOUSE_CURSOR_VISIBLE = function(toggle) invoker.call(0x98215325A695E78A, toggle) end,
	---Returns TRUE if mouse is hovering above instructional buttons. Works with all buttons gfx, such as popup_warning, pause_menu_instructional_buttons, instructional_buttons, etc. Note: You have to call TOGGLE_MOUSE_BUTTONS on the scaleform if you want this native to work.  
	IS_MOUSE_ROLLED_OVER_INSTRUCTIONAL_BUTTONS = function() return invoker.call(0x3D9ACB1EB139E702).bool end,
	---  
	GET_MOUSE_EVENT = function(scaleformHandle, p1, p2, p3) return invoker.call(0x632B2940C67F4EA9, scaleformHandle, p1, p2, p3).bool end,
	---  
	THEFEED_ONLY_SHOW_TOOLTIPS = function(toggle) invoker.call(0x6F1554B0CC2089FA, toggle) end,
	---  
	THEFEED_SET_SCRIPTED_MENU_HEIGHT = function(pos) invoker.call(0x55598D21339CB998, pos) end,
	---Stops loading screen tips shown by invoking `THEFEED_SHOW`  
	THEFEED_HIDE = function() invoker.call(0x32888337579A5970) end,
	---Once called each frame hides all above radar notifications.  
	THEFEED_HIDE_THIS_FRAME = function() invoker.call(0x25F87B30C382FCA7) end,
	---Displays loading screen tips, requires `THEFEED_AUTO_POST_GAMETIPS_ON` to be called beforehand.  
	THEFEED_SHOW = function() invoker.call(0x15CFA549788D35EF) end,
	---  
	THEFEED_FLUSH_QUEUE = function() invoker.call(0xA8FDB297A8D25FBA) end,
	---Removes a notification instantly instead of waiting for it to disappear  
	THEFEED_REMOVE_ITEM = function(notificationId) invoker.call(0xBE4390CB40B3E627, notificationId) end,
	---  
	THEFEED_FORCE_RENDER_ON = function() invoker.call(0xA13C11E1B5C06BFC) end,
	---Enables loading screen tips to be be shown (`THEFEED_SHOW`), blocks other kinds of notifications from being displayed (at least from current script). Call `0xADED7F5748ACAFE6` to display those again.  
	THEFEED_FORCE_RENDER_OFF = function() invoker.call(0x583049884A2EEE3C) end,
	---  
	THEFEED_PAUSE = function() invoker.call(0xFDB423997FA30340) end,
	---  
	THEFEED_RESUME = function() invoker.call(0xE1CD1E48E025E661) end,
	---  
	THEFEED_IS_PAUSED = function() return invoker.call(0xA9CBFD40B3FA3010).bool end,
	---  
	THEFEED_REPORT_LOGO_ON = function() invoker.call(0xD4438C0564490E63) end,
	---  
	THEFEED_REPORT_LOGO_OFF = function() invoker.call(0xB695E2CD0A2DA9EE) end,
	---Returns the handle for the notification currently displayed on the screen. Name may be a hash collision, but describes the function accurately.  
	THEFEED_GET_LAST_SHOWN_PHONE_ACTIVATABLE_FEED_ID = function() return invoker.call(0x82352748437638CA).int end,
	---Enables loading screen tips to be be shown (`THEFEED_SHOW`), blocks other kinds of notifications from being displayed (at least from current script). Call `THEFEED_AUTO_POST_GAMETIPS_OFF` to display those again.  
	THEFEED_AUTO_POST_GAMETIPS_ON = function() invoker.call(0x56C8B608CFD49854) end,
	---Displays "normal" notifications again after calling `THEFEED_AUTO_POST_GAMETIPS_ON` (those that were drawn before calling this native too), though those will have a weird offset and stay on screen forever (tested with notifications created from same script).  
	THEFEED_AUTO_POST_GAMETIPS_OFF = function() invoker.call(0xADED7F5748ACAFE6) end,
	---From the decompiled scripts:  
	---HUD::THEFEED_SET_BACKGROUND_COLOR_FOR_NEXT_POST(6);  
	---HUD::THEFEED_SET_BACKGROUND_COLOR_FOR_NEXT_POST(184);  
	---HUD::THEFEED_SET_BACKGROUND_COLOR_FOR_NEXT_POST(190);  
	---  
	---sets background color for the next notification  
	---6 = red  
	---184 = green  
	---190 = yellow  
	---  
	---Here is a list of some colors that can be used: https://gyazo.com/68bd384455fceb0a85a8729e48216e15  
	THEFEED_SET_BACKGROUND_COLOR_FOR_NEXT_POST = function(hudColorIndex) invoker.call(0x92F0DA1E27DB96DC, hudColorIndex) end,
	---  
	THEFEED_SET_RGBA_PARAMETER_FOR_NEXT_MESSAGE = function(red, green, blue, alpha) invoker.call(0x17430B918701C342, red, green, blue, alpha) end,
	---Related to notification color flashing, setting count to 0 invalidates a `THEFEED_SET_RGBA_PARAMETER_FOR_NEXT_MESSAGE` call for the target notification.  
	THEFEED_SET_FLASH_DURATION_PARAMETER_FOR_NEXT_MESSAGE = function(count) invoker.call(0x17AD8C9706BDD88A, count) end,
	---  
	THEFEED_SET_VIBRATE_PARAMETER_FOR_NEXT_MESSAGE = function(toggle) invoker.call(0x4A0C7C9BB10ABB36, toggle) end,
	---  
	THEFEED_RESET_ALL_PARAMETERS = function() invoker.call(0xFDD85225B2DEA55E) end,
	---Requires manual management of game stream handles (i.e., 0xBE4390CB40B3E627).  
	THEFEED_FREEZE_NEXT_POST = function() invoker.call(0xFDEC055AB549E328) end,
	---  
	THEFEED_CLEAR_FROZEN_POST = function() invoker.call(0x80FE4F3AB4E1B62A) end,
	---  
	THEFEED_SET_SNAP_FEED_ITEM_POSITIONS = function(p0) invoker.call(0xBAE4F9B97CD43B30, p0) end,
	---Used in the native scripts to reference "GET_PEDHEADSHOT_TXD_STRING" and "CHAR_DEFAULT".  
	THEFEED_UPDATE_ITEM_TEXTURE = function(txdString1, txnString1, txdString2, txnString2) invoker.call(0x317EBA71D7543F52, txdString1, txnString1, txdString2, txnString2) end,
	---Declares the entry type of a notification, for example "STRING".  
	---  
	---int ShowNotification(char *text)  
	---{  
	---	BEGIN_TEXT_COMMAND_THEFEED_POST("STRING");  
	---	ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME(text);  
	---	return END_TEXT_COMMAND_THEFEED_POST_TICKER(1, 1);  
	---}  
	BEGIN_TEXT_COMMAND_THEFEED_POST = function(text) invoker.call(0x202709F4C58A0424, text) end,
	---List of picture names: https://pastebin.com/XdpJVbHz  
	---Example result: https://i.imgur.com/SdEZ22m.png  
	END_TEXT_COMMAND_THEFEED_POST_STATS = function(statTitle, iconEnum, stepVal, barValue, isImportant, pictureTextureDict, pictureTextureName) return invoker.call(0x2B7E9A4EAAA93C89, statTitle, iconEnum, stepVal, barValue, isImportant, pictureTextureDict, pictureTextureName).int end,
	---This function can show pictures of every texture that can be requested by REQUEST_STREAMED_TEXTURE_DICT.  
	---  
	---List of picNames: https://pastebin.com/XdpJVbHz  
	---  
	---  
	---flash is a bool for fading in.  
	---iconTypes:  
	---1 : Chat Box  
	---2 : Email  
	---3 : Add Friend Request  
	---4 : Nothing  
	---5 : Nothing  
	---6 : Nothing  
	---7 : Right Jumping Arrow  
	---8 : RP Icon  
	---9 : $ Icon  
	---  
	---"sender" is the very top header. This can be any old string.  
	---"subject" is the header under the sender.  
	END_TEXT_COMMAND_THEFEED_POST_MESSAGETEXT = function(txdName, textureName, flash, iconType, sender, subject) return invoker.call(0x1CCD9A37359072CF, txdName, textureName, flash, iconType, sender, subject).int end,
	---This function can show pictures of every texture that can be requested by REQUEST_STREAMED_TEXTURE_DICT.  
	---  
	---Needs more research.  
	---  
	---Only one type of usage in the scripts:  
	---  
	---HUD::END_TEXT_COMMAND_THEFEED_POST_MESSAGETEXT_SUBTITLE_LABEL("CHAR_ACTING_UP", "CHAR_ACTING_UP", 0, 0, "DI_FEED_CHAR", a_0);  
	END_TEXT_COMMAND_THEFEED_POST_MESSAGETEXT_SUBTITLE_LABEL = function(txdName, textureName, flash, iconType, sender, subject) return invoker.call(0xC6F580E4C94926AC, txdName, textureName, flash, iconType, sender, subject).int end,
	---This function can show pictures of every texture that can be requested by REQUEST_STREAMED_TEXTURE_DICT.  
	---  
	---NOTE: 'duration' is a multiplier, so 1.0 is normal, 2.0 is twice as long (very slow), and 0.5 is half as long.  
	---  
	---Example, only occurrence in the scripts:  
	---v_8 = HUD::END_TEXT_COMMAND_THEFEED_POST_MESSAGETEXT_TU("CHAR_SOCIAL_CLUB", "CHAR_SOCIAL_CLUB", 0, 0, &v_9, "", a_5);  
	END_TEXT_COMMAND_THEFEED_POST_MESSAGETEXT_TU = function(txdName, textureName, flash, iconType, sender, subject, duration) return invoker.call(0x1E6611149DB3DB6B, txdName, textureName, flash, iconType, sender, subject, duration).int end,
	---This function can show pictures of every texture that can be requested by REQUEST_STREAMED_TEXTURE_DICT.  
	---  
	---List of picNames https://pastebin.com/XdpJVbHz  
	---  
	---flash is a bool for fading in.  
	---iconTypes:  
	---1 : Chat Box  
	---2 : Email  
	---3 : Add Friend Request  
	---4 : Nothing  
	---5 : Nothing  
	---6 : Nothing  
	---7 : Right Jumping Arrow  
	---8 : RP Icon  
	---9 : $ Icon  
	---  
	---"sender" is the very top header. This can be any old string.  
	---"subject" is the header under the sender.  
	---"duration" is a multiplier, so 1.0 is normal, 2.0 is twice as long (very slow), and 0.5 is half as long.  
	---"clanTag" shows a crew tag in the "sender" header, after the text. You need to use 3 underscores as padding. Maximum length of this field seems to be 7. (e.g. "MK" becomes "___MK", "ACE" becomes "___ACE", etc.)  
	END_TEXT_COMMAND_THEFEED_POST_MESSAGETEXT_WITH_CREW_TAG = function(txdName, textureName, flash, iconType, sender, subject, duration, clanTag) return invoker.call(0x5CBF7BADE20DB93E, txdName, textureName, flash, iconType, sender, subject, duration, clanTag).int end,
	---This function can show pictures of every texture that can be requested by REQUEST_STREAMED_TEXTURE_DICT.  
	---  
	---List of picNames:  https://pastebin.com/XdpJVbHz  
	---  
	---flash is a bool for fading in.  
	---iconTypes:  
	---1 : Chat Box  
	---2 : Email  
	---3 : Add Friend Request  
	---4 : Nothing  
	---5 : Nothing  
	---6 : Nothing  
	---7 : Right Jumping Arrow  
	---8 : RP Icon  
	---9 : $ Icon  
	---  
	---"sender" is the very top header. This can be any old string.  
	---"subject" is the header under the sender.  
	---"duration" is a multiplier, so 1.0 is normal, 2.0 is twice as long (very slow), and 0.5 is half as long.  
	---"clanTag" shows a crew tag in the "sender" header, after the text. You need to use 3 underscores as padding. Maximum length of this field seems to be 7. (e.g. "MK" becomes "___MK", "ACE" becomes "___ACE", etc.)  
	---iconType2 is a mirror of iconType. It shows in the "subject" line, right under the original iconType.  
	---  
	---  
	---int IconNotification(char *text, char *text2, char *Subject)  
	---{  
	---    BEGIN_TEXT_COMMAND_THEFEED_POST("STRING");  
	--- ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME(text);  
	---   _SET_NOTIFICATION_MESSAGE_CLAN_TAG_2("CHAR_SOCIAL_CLUB", "CHAR_SOCIAL_CLUB", 1, 7, text2, Subject, 1.0f, "__EXAMPLE", 7);  
	---   return END_TEXT_COMMAND_THEFEED_POST_TICKER(1, 1);  
	---}  
	END_TEXT_COMMAND_THEFEED_POST_MESSAGETEXT_WITH_CREW_TAG_AND_ADDITIONAL_ICON = function(txdName, textureName, flash, iconType1, sender, subject, duration, clanTag, iconType2, p9) return invoker.call(0x531B84E7DA981FB6, txdName, textureName, flash, iconType1, sender, subject, duration, clanTag, iconType2, p9).int end,
	---  
	END_TEXT_COMMAND_THEFEED_POST_TICKER = function(blink, p1) return invoker.call(0x2ED7843F8F801023, blink, p1).int end,
	---  
	END_TEXT_COMMAND_THEFEED_POST_TICKER_FORCED = function(blink, p1) return invoker.call(0x44FA03975424A0EE, blink, p1).int end,
	---  
	END_TEXT_COMMAND_THEFEED_POST_TICKER_WITH_TOKENS = function(blink, p1) return invoker.call(0x378E809BF61EC840, blink, p1).int end,
	---Shows an "award" notification above the minimap, example: https://i.imgur.com/e2DNaKX.png  
	---Example:  
	---  
	---HUD::BEGIN_TEXT_COMMAND_THEFEED_POST("HUNT");  
	---HUD::END_TEXT_COMMAND_THEFEED_POST_AWARD("Hunting", "Hunting_Gold_128", 0, 109, "HUD_MED_UNLKED");  
	END_TEXT_COMMAND_THEFEED_POST_AWARD = function(textureDict, textureName, rpBonus, colorOverlay, titleLabel) return invoker.call(0xAA295B6F28BD587D, textureDict, textureName, rpBonus, colorOverlay, titleLabel).int end,
	---  
	END_TEXT_COMMAND_THEFEED_POST_CREWTAG = function(p0, p1, p2, p3, isLeader, unk0, clanDesc, R, G, B) return invoker.call(0x97C9E4E7024A8F2C, p0, p1, p2, p3, isLeader, unk0, clanDesc, R, G, B).int end,
	---  
	END_TEXT_COMMAND_THEFEED_POST_CREWTAG_WITH_GAME_NAME = function(p0, p1, p2, p3, isLeader, unk0, clanDesc, playerName, R, G, B) return invoker.call(0x137BC35589E34E1E, p0, p1, p2, p3, isLeader, unk0, clanDesc, playerName, R, G, B).int end,
	---  
	END_TEXT_COMMAND_THEFEED_POST_UNLOCK = function(gxtLabel1, p1, gxtLabel2) return invoker.call(0x33EE12743CCD6343, gxtLabel1, p1, gxtLabel2).int end,
	---  
	END_TEXT_COMMAND_THEFEED_POST_UNLOCK_TU = function(gxtLabel1, p1, gxtLabel2, p3) return invoker.call(0xC8F3AAF93D0600BF, gxtLabel1, p1, gxtLabel2, p3).int end,
	---  
	END_TEXT_COMMAND_THEFEED_POST_UNLOCK_TU_WITH_COLOR = function(p0, p1, p2, p3, p4, p5) return invoker.call(0x7AE0589093A2E088, p0, p1, p2, p3, p4, p5).int end,
	---  
	END_TEXT_COMMAND_THEFEED_POST_MPTICKER = function(blink, p1) return invoker.call(0xF020C96915705B3A, blink, p1).int end,
	---  
	END_TEXT_COMMAND_THEFEED_POST_CREW_RANKUP_WITH_LITERAL_FLAG = function(p0, p1, p2, p3, p4) return invoker.call(0x8EFCCF6EC66D85E4, p0, p1, p2, p3, p4).int end,
	---This function can show pictures of every texture that can be requested by REQUEST_STREAMED_TEXTURE_DICT.  
	---  
	---List of picNames: https://pastebin.com/XdpJVbHz  
	---HUD colors and their values: https://pastebin.com/d9aHPbXN  
	---  
	---Shows a deathmatch score above the minimap, example: https://i.imgur.com/YmoMklG.png  
	END_TEXT_COMMAND_THEFEED_POST_VERSUS_TU = function(txdName1, textureName1, count1, txdName2, textureName2, count2, hudColor1, hudColor2) return invoker.call(0xB6871B0555B02996, txdName1, textureName1, count1, txdName2, textureName2, count2, hudColor1, hudColor2).int end,
	---returns a notification handle, prints out a notification like below:  
	---type range: 0 - 2  
	---if you set type to 1, image goes from 0 - 39 - Xbox you can add text to  
	---  
	---example:   
	---HUD::END_TEXT_COMMAND_THEFEED_POST_REPLAY_INPUT(1, 20, "Who you trynna get crazy with, ese? Don't you know I'm LOCO?!");  
	---- https://imgur.com/lGBPCz3  
	END_TEXT_COMMAND_THEFEED_POST_REPLAY = function(type, image, text) return invoker.call(0xD202B92CBF1D816F, type, image, text).int end,
	---returns a notification handle, prints out a notification like below:  
	---type range: 0 - 2  
	---if you set type to 1, button accepts "~INPUT_SOMETHING~"  
	---  
	---example:  
	---HUD::END_TEXT_COMMAND_THEFEED_POST_REPLAY_INPUT(1, "~INPUT_TALK~", "Who you trynna get crazy with, ese? Don't you know I'm LOCO?!");  
	---- https://imgur.com/UPy0Ial  
	---  
	---  
	---Examples from the scripts:  
	---l_D1[1/*1*/]=HUD::END_TEXT_COMMAND_THEFEED_POST_REPLAY_INPUT(1,"~INPUT_REPLAY_START_STOP_RECORDING~","");  
	---l_D1[2/*1*/]=HUD::END_TEXT_COMMAND_THEFEED_POST_REPLAY_INPUT(1,"~INPUT_SAVE_REPLAY_CLIP~","");  
	---l_D1[1/*1*/]=HUD::END_TEXT_COMMAND_THEFEED_POST_REPLAY_INPUT(1,"~INPUT_REPLAY_START_STOP_RECORDING~","");  
	---l_D1[2/*1*/]=HUD::END_TEXT_COMMAND_THEFEED_POST_REPLAY_INPUT(1,"~INPUT_REPLAY_START_STOP_RECORDING_SECONDARY~","");  
	---  
	END_TEXT_COMMAND_THEFEED_POST_REPLAY_INPUT = function(type, button, text) return invoker.call(0xDD6CB2CCE7C2735C, type, button, text).int end,
	---void ShowSubtitle(const char *text)  
	---{  
	---  BEGIN_TEXT_COMMAND_PRINT("STRING");  
	--- ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME(text);  
	---   END_TEXT_COMMAND_PRINT(2000, true);  
	---}  
	BEGIN_TEXT_COMMAND_PRINT = function(GxtEntry) invoker.call(0xB87A37EEB7FAA67D, GxtEntry) end,
	---Draws the subtitle at middle center of the screen.  
	---  
	---int duration = time in milliseconds to show text on screen before disappearing  
	---  
	---drawImmediately = If true, the text will be drawn immediately, if false, the text will be drawn after the previous subtitle has finished  
	---  
	---Used to be known as _DRAW_SUBTITLE_TIMED  
	END_TEXT_COMMAND_PRINT = function(duration, drawImmediately) invoker.call(0x9D77056A530643F6, duration, drawImmediately) end,
	---nothin doin.   
	---  
	---BOOL Message(const char* text)  
	---   {  
	---     BEGIN_TEXT_COMMAND_IS_MESSAGE_DISPLAYED("STRING");  
	---      ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME(text);  
	---       return END_TEXT_COMMAND_IS_MESSAGE_DISPLAYED();  
	---   }  
	BEGIN_TEXT_COMMAND_IS_MESSAGE_DISPLAYED = function(text) invoker.call(0x853648FD1063A213, text) end,
	---  
	END_TEXT_COMMAND_IS_MESSAGE_DISPLAYED = function() return invoker.call(0x8A9BA1AB3E237613).bool end,
	---The following were found in the decompiled script files:  
	---STRING, TWOSTRINGS, NUMBER, PERCENTAGE, FO_TWO_NUM, ESMINDOLLA, ESDOLLA, MTPHPER_XPNO, AHD_DIST, CMOD_STAT_0, CMOD_STAT_1, CMOD_STAT_2, CMOD_STAT_3, DFLT_MNU_OPT, F3A_TRAFDEST, ES_HELP_SOC3  
	---  
	---ESDOLLA - cash  
	---ESMINDOLLA - cash (negative)  
	---  
	---Used to be known as _SET_TEXT_ENTRY  
	BEGIN_TEXT_COMMAND_DISPLAY_TEXT = function(text) invoker.call(0x25FBB336DF1804CB, text) end,
	---After applying the properties to the text (See HUD::SET_TEXT_), this will draw the text in the applied position. Also 0.0f < x, y < 1.0f, percentage of the axis.  
	---  
	---Used to be known as _DRAW_TEXT  
	END_TEXT_COMMAND_DISPLAY_TEXT = function(x, y, p2) invoker.call(0xCD015E5BB0D96A57, x, y, p2) end,
	---  
	BEGIN_TEXT_COMMAND_GET_SCREEN_WIDTH_OF_DISPLAY_TEXT = function(text) invoker.call(0x54CE8AC98E120CAB, text) end,
	---  
	END_TEXT_COMMAND_GET_SCREEN_WIDTH_OF_DISPLAY_TEXT = function(p0) return invoker.call(0x85F061DA64ED2F67, p0).float end,
	---int GetLineCount(char *text, float x, float y)  
	---    {  
	---     BEGIN_TEXT_COMMAND_GET_NUMBER_OF_LINES_FOR_STRING("STRING");  
	---                ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME(text);  
	---      return BEGIN_TEXT_COMMAND_GET_NUMBER_OF_LINES_FOR_STRING(x, y);  
	---    }  
	BEGIN_TEXT_COMMAND_GET_NUMBER_OF_LINES_FOR_STRING = function(entry) invoker.call(0x521FB041D93DD0E4, entry) end,
	---Determines how many lines the text string will use when drawn on screen.   
	---Must use 0x521FB041D93DD0E4 for setting up  
	END_TEXT_COMMAND_GET_NUMBER_OF_LINES_FOR_STRING = function(x, y) return invoker.call(0x9040DFB09BE75706, x, y).int end,
	---Used to be known as _SET_TEXT_COMPONENT_FORMAT  
	BEGIN_TEXT_COMMAND_DISPLAY_HELP = function(inputType) invoker.call(0x8509B634FBE7DA11, inputType) end,
	---shape goes from -1 to 50 (may be more).  
	---p0 is always 0.  
	---  
	---Example:  
	---void FloatingHelpText(const char* text)  
	---{  
	---    BEGIN_TEXT_COMMAND_DISPLAY_HELP("STRING");  
	---  ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME(text);  
	---   END_TEXT_COMMAND_DISPLAY_HELP (0, 0, 1, -1);  
	---}  
	---  
	---Image:  
	---- imgbin.org/images/26209.jpg  
	---  
	---more inputs/icons:  
	---- https://pastebin.com/nqNYWMSB  
	---  
	---Used to be known as _DISPLAY_HELP_TEXT_FROM_STRING_LABEL  
	END_TEXT_COMMAND_DISPLAY_HELP = function(p0, loop, beep, shape) invoker.call(0x238FFE5C7B0498A6, p0, loop, beep, shape) end,
	---BOOL IsContextActive(char *ctx)  
	---    {  
	---     BEGIN_TEXT_COMMAND_IS_THIS_HELP_MESSAGE_BEING_DISPLAYED(ctx);  
	---     return END_TEXT_COMMAND_IS_THIS_HELP_MESSAGE_BEING_DISPLAYED(0);  
	---  }  
	BEGIN_TEXT_COMMAND_IS_THIS_HELP_MESSAGE_BEING_DISPLAYED = function(labelName) invoker.call(0x0A24DA3A41B718F5, labelName) end,
	---  
	END_TEXT_COMMAND_IS_THIS_HELP_MESSAGE_BEING_DISPLAYED = function(p0) return invoker.call(0x10BDDBFC529428DD, p0).bool end,
	---Starts a text command to change the name of a blip displayed in the pause menu.  
	---This should be paired with `END_TEXT_COMMAND_SET_BLIP_NAME`, once adding all required text components.  
	---Example:  
	---  
	---HUD::BEGIN_TEXT_COMMAND_SET_BLIP_NAME("STRING");  
	---HUD::ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME("Name");  
	---HUD::END_TEXT_COMMAND_SET_BLIP_NAME(blip);  
	BEGIN_TEXT_COMMAND_SET_BLIP_NAME = function(textLabel) invoker.call(0xF9113A30DE5C6670, textLabel) end,
	---Finalizes a text command started with BEGIN_TEXT_COMMAND_SET_BLIP_NAME, setting the name of the specified blip.  
	END_TEXT_COMMAND_SET_BLIP_NAME = function(blip) invoker.call(0xBC38B49BCB83BC9B, blip) end,
	---  
	BEGIN_TEXT_COMMAND_ADD_DIRECTLY_TO_PREVIOUS_BRIEFS = function(p0) invoker.call(0x23D69E0465570028, p0) end,
	---  
	END_TEXT_COMMAND_ADD_DIRECTLY_TO_PREVIOUS_BRIEFS = function(p0) invoker.call(0xCFDBDF5AE59BA0F4, p0) end,
	---clears a print text command with this text  
	BEGIN_TEXT_COMMAND_CLEAR_PRINT = function(text) invoker.call(0xE124FA80A759019C, text) end,
	---  
	END_TEXT_COMMAND_CLEAR_PRINT = function() invoker.call(0xFCC75460ABA29378) end,
	---  
	BEGIN_TEXT_COMMAND_OVERRIDE_BUTTON_TEXT = function(gxtEntry) invoker.call(0x8F9EE5687F8EECCD, gxtEntry) end,
	---  
	END_TEXT_COMMAND_OVERRIDE_BUTTON_TEXT = function(p0) invoker.call(0xA86911979638106F, p0) end,
	---  
	ADD_TEXT_COMPONENT_INTEGER = function(value) invoker.call(0x03B504CF259931BC, value) end,
	---  
	ADD_TEXT_COMPONENT_FLOAT = function(value, decimalPlaces) invoker.call(0xE7DCB5B874BCD96E, value, decimalPlaces) end,
	---  
	ADD_TEXT_COMPONENT_SUBSTRING_TEXT_LABEL = function(labelName) invoker.call(0xC63CD5D2920ACBE7, labelName) end,
	---It adds the localized text of the specified GXT entry name. Eg. if the argument is GET_HASH_KEY("ES_HELP"), adds "Continue". Just uses a text labels hash key  
	ADD_TEXT_COMPONENT_SUBSTRING_TEXT_LABEL_HASH_KEY = function(gxtEntryHash) invoker.call(0x17299B63C7683A2B, gxtEntryHash) end,
	---  
	ADD_TEXT_COMPONENT_SUBSTRING_BLIP_NAME = function(blip) invoker.call(0x80EAD8E2E1D5D52E, blip) end,
	---  
	ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME = function(text) invoker.call(0x6C188BE134E074AA, text) end,
	---Adds a timer (e.g. "00:00:00:000"). The appearance of the timer depends on the flags, which needs more research.  
	ADD_TEXT_COMPONENT_SUBSTRING_TIME = function(timestamp, flags) invoker.call(0x1115F16B8AB9E8BF, timestamp, flags) end,
	---  
	ADD_TEXT_COMPONENT_FORMATTED_INTEGER = function(value, commaSeparated) invoker.call(0x0E4C749FF9DE9CC4, value, commaSeparated) end,
	---p1 was always -1  
	ADD_TEXT_COMPONENT_SUBSTRING_PHONE_NUMBER = function(p0, p1) invoker.call(0x761B77454205A61D, p0, p1) end,
	---This native (along with ADD_TEXT_COMPONENT_SUBSTRING_KEYBOARD_DISPLAY and ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME) do not actually filter anything. They simply add the provided text (as of 944)  
	ADD_TEXT_COMPONENT_SUBSTRING_WEBSITE = function(website) invoker.call(0x94CF4AC034C9C986, website) end,
	---  
	ADD_TEXT_COMPONENT_SUBSTRING_KEYBOARD_DISPLAY = function(string) invoker.call(0x5F68520888E69014, string) end,
	---  
	SET_COLOUR_OF_NEXT_TEXT_COMPONENT = function(hudColor) invoker.call(0x39BBF623FC803EAC, hudColor) end,
	---Returns a substring of a specified length starting at a specified position.  
	---  
	---Example:  
	---// Get "STRING" text from "MY_STRING"  
	---subStr = HUD::GET_CHARACTER_FROM_AUDIO_CONVERSATION_FILENAME("MY_STRING", 3, 6);  
	GET_CHARACTER_FROM_AUDIO_CONVERSATION_FILENAME = function(text, position, length) return invoker.call(0x169BD9382084C8C0, text, position, length).str end,
	---Returns a substring of a specified length starting at a specified position. The result is guaranteed not to exceed the specified max length.  
	---  
	---NOTE: The 'maxLength' parameter might actually be the size of the buffer that is returned. More research is needed. -CL69  
	---  
	---Example:  
	---// Condensed example of how Rockstar uses this function  
	---strLen = HUD::GET_LENGTH_OF_LITERAL_STRING(MISC::GET_ONSCREEN_KEYBOARD_RESULT());  
	---subStr = HUD::GET_CHARACTER_FROM_AUDIO_CONVERSATION_FILENAME_WITH_BYTE_LIMIT(MISC::GET_ONSCREEN_KEYBOARD_RESULT(), 0, strLen, 63);  
	---  
	-----  
	---  
	---"fm_race_creator.ysc", line 85115:  
	---// parameters modified for clarity  
	---BOOL sub_8e5aa(char *text, int length) {  
	---    for (i = 0; i <= (length - 2); i += 1) {  
	---        if (!MISC::ARE_STRINGS_EQUAL(HUD::GET_CHARACTER_FROM_AUDIO_CONVERSATION_FILENAME_WITH_BYTE_LIMIT(text, i, i + 1, 1), " ")) {  
	---            return FALSE;  
	---        }  
	---    }  
	---    return TRUE;  
	---}  
	GET_CHARACTER_FROM_AUDIO_CONVERSATION_FILENAME_WITH_BYTE_LIMIT = function(text, position, length, maxLength) return invoker.call(0xB2798643312205C5, text, position, length, maxLength).str end,
	---Returns a substring that is between two specified positions. The length of the string will be calculated using (endPosition - startPosition).  
	---  
	---Example:  
	---// Get "STRING" text from "MY_STRING"  
	---subStr = HUD::GET_CHARACTER_FROM_AUDIO_CONVERSATION_FILENAME_BYTES("MY_STRING", 3, 9);  
	---// Overflows are possibly replaced with underscores (needs verification)  
	---subStr = HUD::GET_CHARACTER_FROM_AUDIO_CONVERSATION_FILENAME_BYTES("MY_STRING", 3, 10); // "STRING_"?  
	GET_CHARACTER_FROM_AUDIO_CONVERSATION_FILENAME_BYTES = function(text, startPosition, endPosition) return invoker.call(0xCE94AEBA5D82908A, text, startPosition, endPosition).str end,
	---Gets a localized string literal from a label name. Can be used for output of e.g. VEHICLE::GET_LIVERY_NAME. To check if a GXT label can be localized with this, HUD::DOES_TEXT_LABEL_EXIST can be used.  
	GET_FILENAME_FOR_AUDIO_CONVERSATION = function(labelName) return invoker.call(0x7B5280EBA9840C72, labelName).str end,
	---  
	CLEAR_PRINTS = function() invoker.call(0xCC33FA791322B9D9) end,
	---  
	CLEAR_BRIEF = function() invoker.call(0x9D292F73ADBD9313) end,
	---  
	CLEAR_ALL_HELP_MESSAGES = function() invoker.call(0x6178F68A87A4D3A0) end,
	---p0: found arguments in the b617d scripts: https://pastebin.com/X5akCN7z  
	CLEAR_THIS_PRINT = function(p0) invoker.call(0xCF708001E1E536DD, p0) end,
	---  
	CLEAR_SMALL_PRINTS = function() invoker.call(0x2CEA2839313C09AC) end,
	---  
	DOES_TEXT_BLOCK_EXIST = function(gxt) return invoker.call(0x1C7302E725259789, gxt).bool end,
	---Request a gxt into the passed slot.  
	REQUEST_ADDITIONAL_TEXT = function(gxt, slot) invoker.call(0x71A78003C8E71424, gxt, slot) end,
	---  
	REQUEST_ADDITIONAL_TEXT_FOR_DLC = function(gxt, slot) invoker.call(0x6009F9F1AE90D8A6, gxt, slot) end,
	---  
	HAS_ADDITIONAL_TEXT_LOADED = function(slot) return invoker.call(0x02245FE4BED318B8, slot).bool end,
	---  
	CLEAR_ADDITIONAL_TEXT = function(p0, p1) invoker.call(0x2A179DF17CCF04CD, p0, p1) end,
	---  
	IS_STREAMING_ADDITIONAL_TEXT = function(p0) return invoker.call(0x8B6817B71B85EBF0, p0).bool end,
	---Checks if the specified gxt has loaded into the passed slot.  
	HAS_THIS_ADDITIONAL_TEXT_LOADED = function(gxt, slot) return invoker.call(0xADBF060E2B30C5BC, gxt, slot).bool end,
	---  
	IS_MESSAGE_BEING_DISPLAYED = function() return invoker.call(0x7984C03AA5CC2F41).bool end,
	---Checks if the passed gxt name exists in the game files.  
	DOES_TEXT_LABEL_EXIST = function(gxt) return invoker.call(0xAC09CA973C564252, gxt).bool end,
	---  
	GET_FIRST_N_CHARACTERS_OF_LITERAL_STRING = function(string, length) return invoker.call(0x98C3CF913D895111, string, length).str end,
	---Returns the string length of the string from the gxt string .  
	GET_LENGTH_OF_STRING_WITH_THIS_TEXT_LABEL = function(gxt) return invoker.call(0x801BD273D3A23F74, gxt).int end,
	---Returns the length of the string passed (much like strlen).  
	GET_LENGTH_OF_LITERAL_STRING = function(string) return invoker.call(0xF030907CCBB8A9FD, string).int end,
	---  
	GET_LENGTH_OF_LITERAL_STRING_IN_BYTES = function(string) return invoker.call(0x43E4111189E54F0E, string).int end,
	---This functions converts the hash of a street name into a readable string.  
	---  
	---For how to get the hashes, see PATHFIND::GET_STREET_NAME_AT_COORD.  
	GET_STREET_NAME_FROM_HASH_KEY = function(hash) return invoker.call(0xD0EF8A959B8A4CB9, hash).str end,
	---  
	IS_HUD_PREFERENCE_SWITCHED_ON = function() return invoker.call(0x1930DFA731813EC4).bool end,
	---  
	IS_RADAR_PREFERENCE_SWITCHED_ON = function() return invoker.call(0x9EB6522EA68F22FE).bool end,
	---  
	IS_SUBTITLE_PREFERENCE_SWITCHED_ON = function() return invoker.call(0xAD6DACA4BA53E0A4).bool end,
	---If Hud should be displayed  
	DISPLAY_HUD = function(toggle) invoker.call(0xA6294919E56FF02A, toggle) end,
	---Enables drawing some hud components, such as help labels, this frame, when the player is dead.  
	DISPLAY_HUD_WHEN_NOT_IN_STATE_OF_PLAY_THIS_FRAME = function() invoker.call(0x7669F9E39DC17063) end,
	---  
	DISPLAY_HUD_WHEN_PAUSED_THIS_FRAME = function() invoker.call(0x402F9ED62087E898) end,
	---If Minimap / Radar should be displayed.  
	DISPLAY_RADAR = function(toggle) invoker.call(0xA0EBB943C300E693, toggle) end,
	---Setter for GET_FAKE_SPECTATOR_MODE  
	SET_FAKE_SPECTATOR_MODE = function(toggle) invoker.call(0xCD74233600C4EA6B, toggle) end,
	---Getter for SET_FAKE_SPECTATOR_MODE  
	GET_FAKE_SPECTATOR_MODE = function() return invoker.call(0xC2D2AD9EAAE265B8).bool end,
	---  
	IS_HUD_HIDDEN = function() return invoker.call(0xA86478C6958735C5).bool end,
	---  
	IS_RADAR_HIDDEN = function() return invoker.call(0x157F93B036700462).bool end,
	---  
	IS_MINIMAP_RENDERING = function() return invoker.call(0xAF754F20EB5CD51A).bool end,
	---  
	USE_VEHICLE_TARGETING_RETICULE = function(p0) invoker.call(0x0C698D8F099174C7, p0) end,
	---  
	_USE_VEHICLE_TARGETING_RETICULE_ON_VEHICLES = function(enable) invoker.call(0x1BC0EA2912708625, enable) end,
	---  
	ADD_VALID_VEHICLE_HIT_HASH = function(p0) invoker.call(0xE4C3B169876D33D7, p0) end,
	---  
	CLEAR_VALID_VEHICLE_HIT_HASHES = function() invoker.call(0xEB81A3DADD503187) end,
	---Enable / disable showing route for the Blip-object.  
	SET_BLIP_ROUTE = function(blip, enabled) invoker.call(0x4F7D8A9BFB0B43E9, blip, enabled) end,
	---  
	CLEAR_ALL_BLIP_ROUTES = function() invoker.call(0xD12882D3FF82BF11) end,
	---  
	SET_BLIP_ROUTE_COLOUR = function(blip, colour) invoker.call(0x837155CD2F63DA09, blip, colour) end,
	---  
	SET_FORCE_SHOW_GPS = function(toggle) invoker.call(0x2790F4B17D098E26, toggle) end,
	---  
	SET_USE_SET_DESTINATION_IN_PAUSE_MAP = function(toggle) invoker.call(0x6CDD58146A436083, toggle) end,
	---  
	SET_BLOCK_WANTED_FLASH = function(disabled) invoker.call(0xD1942374085C8469, disabled) end,
	---  
	ADD_NEXT_MESSAGE_TO_PREVIOUS_BRIEFS = function(p0) invoker.call(0x60296AF4BA14ABC5, p0) end,
	---  
	FORCE_NEXT_MESSAGE_TO_PREVIOUS_BRIEFS_LIST = function(p0) invoker.call(0x57D760D55F54E071, p0) end,
	---zoom ranges from 0 to 90f in R* Scripts  
	SET_RADAR_ZOOM_PRECISE = function(zoom) invoker.call(0xBD12C5EEE184C337, zoom) end,
	---zoomLevel ranges from 0 to 1400 in R* Scripts  
	SET_RADAR_ZOOM = function(zoomLevel) invoker.call(0x096EF57A0C999BBA, zoomLevel) end,
	---  
	SET_RADAR_ZOOM_TO_BLIP = function(blip, zoom) invoker.call(0xF98E4B3E56AFC7B1, blip, zoom) end,
	---  
	SET_RADAR_ZOOM_TO_DISTANCE = function(zoom) invoker.call(0xCB7CC0D58405AD41, zoom) end,
	---Does nothing (it's a nullsub).  
	UPDATE_RADAR_ZOOM_TO_BLIP = function() invoker.call(0xD2049635DEB9C375) end,
	---  
	GET_HUD_COLOUR = function(hudColorIndex, r, g, b, a) invoker.call(0x7C9C91AB74A0360F, hudColorIndex, r, g, b, a) end,
	---Sets the color of HUD_COLOUR_SCRIPT_VARIABLE  
	SET_SCRIPT_VARIABLE_HUD_COLOUR = function(r, g, b, a) invoker.call(0xD68A5FF8A3A89874, r, g, b, a) end,
	---Sets the color of HUD_COLOUR_SCRIPT_VARIABLE_2  
	SET_SECOND_SCRIPT_VARIABLE_HUD_COLOUR = function(r, g, b, a) invoker.call(0x16A304E6CB2BFAB9, r, g, b, a) end,
	---makes hudColorIndex2 color into hudColorIndex color  
	REPLACE_HUD_COLOUR = function(hudColorIndex, hudColorIndex2) invoker.call(0x1CCC708F0F850613, hudColorIndex, hudColorIndex2) end,
	---  
	REPLACE_HUD_COLOUR_WITH_RGBA = function(hudColorIndex, r, g, b, a) invoker.call(0xF314CF4F0211894E, hudColorIndex, r, g, b, a) end,
	---  
	SET_ABILITY_BAR_VISIBILITY = function(visible) invoker.call(0x1DFEDD15019315A9, visible) end,
	---  
	SET_ALLOW_ABILITY_BAR = function(toggle) invoker.call(0x889329C80FE5963C, toggle) end,
	---  
	FLASH_ABILITY_BAR = function(millisecondsToFlash) invoker.call(0x02CFBA0C9E9275CE, millisecondsToFlash) end,
	---  
	SET_ABILITY_BAR_VALUE = function(p0, p1) invoker.call(0x9969599CCFF5D85E, p0, p1) end,
	---  
	FLASH_WANTED_DISPLAY = function(p0) invoker.call(0xA18AFB39081B6A1F, p0) end,
	---  
	FORCE_OFF_WANTED_STAR_FLASH = function(toggle) invoker.call(0xBA8D65C1C65702E5, toggle) end,
	---  
	SET_CUSTOM_MP_HUD_COLOR = function(hudColorId) invoker.call(0x2ACCB195F3CCD9DE, hudColorId) end,
	---This gets the height of the FONT and not the total text. You need to get the number of lines your text uses, and get the height of a newline (I'm using a smaller value) to get the total text height.  
	GET_RENDERED_CHARACTER_HEIGHT = function(size, font) return invoker.call(0xDB88A37483346780, size, font).float end,
	---Size range : 0F to 1.0F  
	---p0 is unknown and doesn't seem to have an effect, yet in the game scripts it changes to 1.0F sometimes.  
	SET_TEXT_SCALE = function(scale, size) invoker.call(0x07C837F9A01C34C9, scale, size) end,
	---colors you input not same as you think?  
	---A: for some reason its R B G A  
	SET_TEXT_COLOUR = function(red, green, blue, alpha) invoker.call(0xBE6B23FFA53FB442, red, green, blue, alpha) end,
	---  
	SET_TEXT_CENTRE = function(align) invoker.call(0xC02F4DBFB51D988B, align) end,
	---  
	SET_TEXT_RIGHT_JUSTIFY = function(toggle) invoker.call(0x6B3C4650BC8BEE47, toggle) end,
	---Types -  
	---0: Center-Justify  
	---1: Left-Justify  
	---2: Right-Justify  
	---  
	---Right-Justify requires SET_TEXT_WRAP, otherwise it will draw to the far right of the screen  
	SET_TEXT_JUSTIFICATION = function(justifyType) invoker.call(0x4E096588B13FFECA, justifyType) end,
	---  
	SET_TEXT_LINE_HEIGHT_MULT = function(lineHeightMult) invoker.call(0x9F4624F76E6953D1, lineHeightMult) end,
	---It sets the text in a specified box and wraps the text if it exceeds the boundries. Both values are for X axis. Useful when positioning text set to center or aligned to the right.  
	---  
	---start - left boundry on screen position (0.0 - 1.0)  
	---end - right boundry on screen position (0.0 - 1.0)  
	SET_TEXT_WRAP = function(start, _end) invoker.call(0x63145D9C883A1A70, start, _end) end,
	---  
	SET_TEXT_LEADING = function(p0) invoker.call(0xA50ABC31E3CDFAFF, p0) end,
	---This native does absolutely nothing, just a nullsub  
	SET_TEXT_PROPORTIONAL = function(p0) invoker.call(0x038C1F517D7FDCF8, p0) end,
	---fonts that mess up your text where made for number values/misc stuff  
	SET_TEXT_FONT = function(fontType) invoker.call(0x66E0276CC5F6B9DA, fontType) end,
	---  
	SET_TEXT_DROP_SHADOW = function() invoker.call(0x1CA3E9EAC9D93E5E) end,
	---distance - shadow distance in pixels, both horizontal and vertical  
	---r, g, b, a - color  
	SET_TEXT_DROPSHADOW = function(distance, r, g, b, a) invoker.call(0x465C84BC39F1C351, distance, r, g, b, a) end,
	---  
	SET_TEXT_OUTLINE = function() invoker.call(0x2513DFB0FB8400FE) end,
	---This native does absolutely nothing, just a nullsub  
	SET_TEXT_EDGE = function(p0, r, g, b, a) invoker.call(0x441603240D202FA6, p0, r, g, b, a) end,
	---  
	SET_TEXT_RENDER_ID = function(renderId) invoker.call(0x5F15302936E07111, renderId) end,
	---This function is hard-coded to always return 1.  
	GET_DEFAULT_SCRIPT_RENDERTARGET_RENDER_ID = function() return invoker.call(0x52F0982D7FD156B6).int end,
	---  
	REGISTER_NAMED_RENDERTARGET = function(name, p1) return invoker.call(0x57D9C12635E25CE3, name, p1).bool end,
	---  
	IS_NAMED_RENDERTARGET_REGISTERED = function(name) return invoker.call(0x78DCDC15C9F116B4, name).bool end,
	---  
	RELEASE_NAMED_RENDERTARGET = function(name) return invoker.call(0xE9F6FFE837354DD4, name).bool end,
	---  
	LINK_NAMED_RENDERTARGET = function(modelHash) invoker.call(0xF6C09E276AEB3F2D, modelHash) end,
	---  
	GET_NAMED_RENDERTARGET_RENDER_ID = function(name) return invoker.call(0x1A6478B61C6BDC3B, name).int end,
	---  
	IS_NAMED_RENDERTARGET_LINKED = function(modelHash) return invoker.call(0x113750538FA31298, modelHash).bool end,
	---  
	CLEAR_HELP = function(toggle) invoker.call(0x8DFCED7A656F8802, toggle) end,
	---  
	IS_HELP_MESSAGE_ON_SCREEN = function() return invoker.call(0xDAD37F45428801AE).bool end,
	---  
	HAS_SCRIPT_HIDDEN_HELP_THIS_FRAME = function() return invoker.call(0x214CD562A939246A).bool end,
	---  
	IS_HELP_MESSAGE_BEING_DISPLAYED = function() return invoker.call(0x4D79439A6B55AC67).bool end,
	---  
	IS_HELP_MESSAGE_FADING_OUT = function() return invoker.call(0x327EDEEEAC55C369).bool end,
	---  
	SET_HELP_MESSAGE_STYLE = function(style, hudColor, alpha, p3, p4) invoker.call(0xB9C362BABECDDC7A, style, hudColor, alpha, p3, p4) end,
	---  
	GET_STANDARD_BLIP_ENUM_ID = function() return invoker.call(0x4A9923385BDB9DAD).int end,
	---  
	GET_WAYPOINT_BLIP_ENUM_ID = function() return invoker.call(0x186E5D252FA50E7D).int end,
	---  
	GET_NUMBER_OF_ACTIVE_BLIPS = function() return invoker.call(0x9A3FF3DE163034E8).int end,
	---  
	GET_NEXT_BLIP_INFO_ID = function(blipSprite) return invoker.call(0x14F96AA50D6FBEA7, blipSprite).int end,
	---  
	GET_FIRST_BLIP_INFO_ID = function(blipSprite) return invoker.call(0x1BEDE233E6CD2A1F, blipSprite).int end,
	---  
	GET_CLOSEST_BLIP_INFO_ID = function(blipSprite) return invoker.call(0xD484BF71050CA1EE, blipSprite).int end,
	---  
	GET_BLIP_INFO_ID_COORD = function(blip) return invoker.call(0xFA7C7F0AADF25D09, blip).scr_vec3 end,
	---  
	GET_BLIP_INFO_ID_DISPLAY = function(blip) return invoker.call(0x1E314167F701DC3B, blip).int end,
	---Returns a value based on what the blip is attached to  
	---1 - Vehicle  
	---2 - Ped  
	---3 - Object  
	---4 - Coord  
	---5 - unk  
	---6 - Pickup  
	---7 - Radius  
	GET_BLIP_INFO_ID_TYPE = function(blip) return invoker.call(0xBE9B0959FFD0779B, blip).int end,
	---  
	GET_BLIP_INFO_ID_ENTITY_INDEX = function(blip) return invoker.call(0x4BA4E2553AFEDC2C, blip).int end,
	---This function is hard-coded to always return 0.  
	GET_BLIP_INFO_ID_PICKUP_INDEX = function(blip) return invoker.call(0x9B6786E4C03DD382, blip).int end,
	---Returns the Blip handle of given Entity.  
	GET_BLIP_FROM_ENTITY = function(entity) return invoker.call(0xBC8DBDCA2436F7E8, entity).int end,
	---  
	ADD_BLIP_FOR_RADIUS = function(posX, posY, posZ, radius) return invoker.call(0x46818D79B1F7499A, posX, posY, posZ, radius).int end,
	---Adds a rectangular blip for the specified coordinates/area.  
	---  
	---It is recommended to use SET_BLIP_ROTATION and SET_BLIP_COLOUR to make the blip not rotate along with the camera.  
	---  
	---By default, the blip will show as a _regular_ blip with the specified color/sprite if it is outside of the minimap view.  
	---  
	---Example image:  
	---minimap https://w.wew.wtf/pdcjig.png  
	---big map https://w.wew.wtf/zgcjcm.png  
	---  
	---(Native name is _likely_ to actually be ADD_BLIP_FOR_AREA, but due to the usual reasons this can't be confirmed)  
	ADD_BLIP_FOR_AREA = function(x, y, z, width, height) return invoker.call(0xCE5D0E5E315DB238, x, y, z, width, height).int end,
	---Returns red ( default ) blip attached to entity.  
	---  
	---Example:  
	---Blip blip; //Put this outside your case or option  
	---blip = HUD::ADD_BLIP_FOR_ENTITY(YourPedOrBodyguardName);  
	---HUD::SET_BLIP_AS_FRIENDLY(blip, true);  
	ADD_BLIP_FOR_ENTITY = function(entity) return invoker.call(0x5CDE92C702A8FCE7, entity).int end,
	---  
	ADD_BLIP_FOR_PICKUP = function(pickup) return invoker.call(0xBE339365C863BD36, pickup).int end,
	---Creates an orange ( default ) Blip-object. Returns a Blip-object which can then be modified.  
	ADD_BLIP_FOR_COORD = function(x, y, z) return invoker.call(0x5A039BB0BCA604B6, x, y, z).int end,
	---  
	TRIGGER_SONAR_BLIP = function(posX, posY, posZ, radius, p4) invoker.call(0x72DD432F3CDFC0EE, posX, posY, posZ, radius, p4) end,
	---  
	ALLOW_SONAR_BLIPS = function(toggle) invoker.call(0x60734CC207C9833C, toggle) end,
	---  
	SET_BLIP_COORDS = function(blip, posX, posY, posZ) invoker.call(0xAE2AF67E9D9AF65D, blip, posX, posY, posZ) end,
	---  
	GET_BLIP_COORDS = function(blip) return invoker.call(0x586AFE3FF72D996E, blip).scr_vec3 end,
	---Sets the displayed sprite for a specific blip..  
	---  
	---You may have your own list, but since dev-c didn't show it I was bored and started looking through scripts and functions to get a presumable almost positive list of a majority of blip IDs  
	---https://pastebin.com/Bpj9Sfft  
	---  
	---Blips Images + IDs:  
	---https://gtaxscripting.blogspot.com/2016/05/gta-v-blips-id-and-image.html  
	SET_BLIP_SPRITE = function(blip, spriteId) invoker.call(0xDF735600A4696DAF, blip, spriteId) end,
	---Blips Images + IDs:  
	---gtaxscripting.blogspot.com/2016/05/gta-v-blips-id-and-image.html  
	GET_BLIP_SPRITE = function(blip) return invoker.call(0x1FC877464A04FC4F, blip).int end,
	---  
	SET_COP_BLIP_SPRITE = function(p0, p1) invoker.call(0x9FCB3CBFB3EAD69A, p0, p1) end,
	---  
	SET_COP_BLIP_SPRITE_AS_STANDARD = function() invoker.call(0xB7B873520C84C118) end,
	---Doesn't work if the label text of gxtEntry is >= 80.  
	SET_BLIP_NAME_FROM_TEXT_FILE = function(blip, gxtEntry) invoker.call(0xEAA0FFE120D92784, blip, gxtEntry) end,
	---  
	SET_BLIP_NAME_TO_PLAYER_NAME = function(blip, player) invoker.call(0x127DE7B20C60A6A3, blip, player) end,
	---Sets alpha-channel for blip color.  
	---  
	---Example:  
	---  
	---Blip blip = HUD::ADD_BLIP_FOR_ENTITY(entity);  
	---HUD::SET_BLIP_COLOUR(blip , 3);  
	---HUD::SET_BLIP_ALPHA(blip , 64);  
	---  
	SET_BLIP_ALPHA = function(blip, alpha) invoker.call(0x45FF974EEE1C8734, blip, alpha) end,
	---  
	GET_BLIP_ALPHA = function(blip) return invoker.call(0x970F608F0EE6C885, blip).int end,
	---  
	SET_BLIP_FADE = function(blip, opacity, duration) invoker.call(0x2AEE8F8390D2298C, blip, opacity, duration) end,
	---Returns -1, 0, +1, depending on if the blip is fading out, doing nothing, or fading in respectively.  
	GET_BLIP_FADE_DIRECTION = function(blip) return invoker.call(0x2C173AE2BDB9385E, blip).int end,
	---After some testing, looks like you need to use CEIL() on the rotation (vehicle/ped heading) before using it there.  
	SET_BLIP_ROTATION = function(blip, rotation) invoker.call(0xF87683CDF73C3F6E, blip, rotation) end,
	---Does not require whole number/integer rotations.  
	SET_BLIP_ROTATION_WITH_FLOAT = function(blip, heading) invoker.call(0xA8B6AFDAC320AC87, blip, heading) end,
	---  
	GET_BLIP_ROTATION = function(blip) return invoker.call(0x003E92BA477F9D7F, blip).int end,
	---Adds up after viewing multiple R* scripts. I believe that the duration is in miliseconds.  
	SET_BLIP_FLASH_TIMER = function(blip, duration) invoker.call(0xD3CD6FD297AE87CC, blip, duration) end,
	---  
	SET_BLIP_FLASH_INTERVAL = function(blip, p1) invoker.call(0xAA51DB313C010A7E, blip, p1) end,
	---https://gtaforums.com/topic/864881-all-blip-color-ids-pictured/  
	SET_BLIP_COLOUR = function(blip, color) invoker.call(0x03D7FB09E75D6B7E, blip, color) end,
	---Can be used to give blips any RGB colour with SET_BLIP_COLOUR(blip, 84).  
	SET_BLIP_SECONDARY_COLOUR = function(blip, r, g, b) invoker.call(0x14892474891E09EB, blip, r, g, b) end,
	---  
	GET_BLIP_COLOUR = function(blip) return invoker.call(0xDF729E8D20CF7327, blip).int end,
	---  
	GET_BLIP_HUD_COLOUR = function(blip) return invoker.call(0x729B5F1EFBC0AAEE, blip).int end,
	---  
	IS_BLIP_SHORT_RANGE = function(blip) return invoker.call(0xDA5F8727EB75B926, blip).bool end,
	---  
	IS_BLIP_ON_MINIMAP = function(blip) return invoker.call(0xE41CA53051197A27, blip).bool end,
	---  
	DOES_BLIP_HAVE_GPS_ROUTE = function(blip) return invoker.call(0xDD2238F57B977751, blip).bool end,
	---  
	SET_BLIP_HIDDEN_ON_LEGEND = function(blip, toggle) invoker.call(0x54318C915D27E4CE, blip, toggle) end,
	---  
	SET_BLIP_HIGH_DETAIL = function(blip, toggle) invoker.call(0xE2590BC29220CEBB, blip, toggle) end,
	---  
	SET_BLIP_AS_MISSION_CREATOR_BLIP = function(blip, toggle) invoker.call(0x24AC0137444F9FD5, blip, toggle) end,
	---  
	IS_MISSION_CREATOR_BLIP = function(blip) return invoker.call(0x26F49BF3381D933D, blip).bool end,
	---  
	GET_NEW_SELECTED_MISSION_CREATOR_BLIP = function() return invoker.call(0x5C90988E7C8E1AF4).int end,
	---  
	IS_HOVERING_OVER_MISSION_CREATOR_BLIP = function() return invoker.call(0x4167EFE0527D706E).bool end,
	---  
	SHOW_START_MISSION_INSTRUCTIONAL_BUTTON = function(toggle) invoker.call(0xF1A6C18B35BCADE6, toggle) end,
	---  
	SHOW_CONTACT_INSTRUCTIONAL_BUTTON = function(toggle) invoker.call(0xC772A904CDE1186F, toggle) end,
	---  
	_SHOW_PURCHASE_INSTRUCTIONAL_BUTTON = function(toggle) invoker.call(0xF6865E26067B708C, toggle) end,
	---  
	RELOAD_MAP_MENU = function() invoker.call(0x2916A928514C9827) end,
	---  
	SET_BLIP_MARKER_LONG_DISTANCE = function(p0, p1) invoker.call(0xB552929B85FC27EC, p0, p1) end,
	---  
	SET_BLIP_FLASHES = function(blip, toggle) invoker.call(0xB14552383D39CE3E, blip, toggle) end,
	---  
	SET_BLIP_FLASHES_ALTERNATE = function(blip, toggle) invoker.call(0x2E8D9498C56DD0D1, blip, toggle) end,
	---  
	IS_BLIP_FLASHING = function(blip) return invoker.call(0xA5E41FD83AD6CEF0, blip).bool end,
	---Sets whether or not the specified blip should only be displayed when nearby, or on the minimap.  
	SET_BLIP_AS_SHORT_RANGE = function(blip, toggle) invoker.call(0xBE8BE4FE60E27B72, blip, toggle) end,
	---  
	SET_BLIP_SCALE = function(blip, scale) invoker.call(0xD38744167B2FA257, blip, scale) end,
	---See https://imgur.com/a/lLkEsMN  
	SET_BLIP_SCALE_2D = function(blip, xScale, yScale) invoker.call(0xCD6524439909C979, blip, xScale, yScale) end,
	---See this topic for more details : gtaforums.com/topic/717612-v-scriptnative-documentation-and-research/page-35?p=1069477935  
	SET_BLIP_PRIORITY = function(blip, priority) invoker.call(0xAE9FC9EF6A9FAC79, blip, priority) end,
	---Display Id behaviours:  
	---0 = Doesn't show up, ever, anywhere.  
	---1 = Doesn't show up, ever, anywhere.  
	---2 = Shows on both main map and minimap. (Selectable on map)  
	---3 = Shows on main map only. (Selectable on map)  
	---4 = Shows on main map only. (Selectable on map)  
	---5 = Shows on minimap only.  
	---6 = Shows on both main map and minimap. (Selectable on map)  
	---7 = Doesn't show up, ever, anywhere.  
	---8 = Shows on both main map and minimap. (Not selectable on map)  
	---9 = Shows on minimap only.  
	---10 = Shows on both main map and minimap. (Not selectable on map)  
	---  
	---Anything higher than 10 seems to be exactly the same as 10.  
	SET_BLIP_DISPLAY = function(blip, displayId) invoker.call(0x9029B2F3DA924928, blip, displayId) end,
	---Example: https://i.imgur.com/skY6vAJ.png  
	---  
	---Index:  
	---1 = No distance shown in legend  
	---2 = Distance shown in legend  
	---7 = "Other Players" category, also shows distance in legend  
	---10 = "Property" category  
	---11 = "Owned Property" category  
	---  
	---Any other value behaves like index = 1, index wraps around after 255  
	---Blips with categories 7, 10 or 11 will all show under the specific categories listing in the map legend, regardless of sprite or name.  
	---Legend entries:  
	---7 = Other Players (BLIP_OTHPLYR)  
	---10 = Property (BLIP_PROPCAT)  
	---11 = Owned Property (BLIP_APARTCAT)  
	---  
	---Category needs to be `7` in order for blip names to show on the expanded minimap when using DISPLAY_PLAYER_NAME_TAGS_ON_BLIPS.  
	SET_BLIP_CATEGORY = function(blip, index) invoker.call(0x234CDD44D996FD9A, blip, index) end,
	---In the C++ SDK, this seems not to work-- the blip isn't removed immediately. I use it for saving cars.  
	---  
	---E.g.:  
	---  
	---Ped pped = PLAYER::PLAYER_PED_ID();  
	---Vehicle v = PED::GET_VEHICLE_PED_IS_USING(pped);  
	---Blip b = HUD::ADD_BLIP_FOR_ENTITY(v);  
	---  
	---works fine.  
	---But later attempting to delete it with:  
	---  
	---Blip b = HUD::GET_BLIP_FROM_ENTITY(v);  
	---if (HUD::DOES_BLIP_EXIST(b)) HUD::REMOVE_BLIP(&b);  
	---  
	---doesn't work. And yes, doesn't work without the DOES_BLIP_EXIST check either. Also, if you attach multiple blips to the same thing (say, a vehicle), and that thing disappears, the blips randomly attach to other things (in my case, a vehicle).  
	---  
	---Thus for me, HUD::REMOVE_BLIP(&b) only works if there's one blip, (in my case) the vehicle is marked as no longer needed, you drive away from it and it eventually despawns, AND there is only one blip attached to it. I never intentionally attach multiple blips but if the user saves the car, this adds a blip. Then if they delete it, it is supposed to remove the blip, but it doesn't. Then they can immediately save it again, causing another blip to re-appear.  
	----------------  
	---  
	---Passing the address of the variable instead of the value works for me.  
	---e.g.  
	---int blip = HUD::ADD_BLIP_FOR_ENTITY(ped);  
	---HUD::REMOVE_BLIP(&blip);  
	---  
	---  
	---Remove blip will currently crash your game, just artificially remove the blip by setting the sprite to a id that is 'invisible'.  
	REMOVE_BLIP = function(blip) invoker.call(0x86A652570E5F25DD, blip) end,
	---false for enemy  
	---true for friendly  
	SET_BLIP_AS_FRIENDLY = function(blip, toggle) invoker.call(0x6F6F290102C02AB4, blip, toggle) end,
	---  
	PULSE_BLIP = function(blip) invoker.call(0x742D6FD43115AF73, blip) end,
	---  
	SHOW_NUMBER_ON_BLIP = function(blip, number) invoker.call(0xA3C0B359DCB848B6, blip, number) end,
	---  
	HIDE_NUMBER_ON_BLIP = function(blip) invoker.call(0x532CFF637EF80148, blip) end,
	---  
	SHOW_HEIGHT_ON_BLIP = function(blip, toggle) invoker.call(0x75A16C3DA34F1245, blip, toggle) end,
	---Adds a green checkmark on top of a blip.  
	SHOW_TICK_ON_BLIP = function(blip, toggle) invoker.call(0x74513EA3E505181E, blip, toggle) end,
	---Adds a orange checkmark on top of a given blip handle: https://imgur.com/a/aw5OTMF  
	---_SHOW_FRIEND_INDICATOR_ON_BLIP* - _SHOW_HEADING_INDICATOR_ON_BLIP*  
	SHOW_GOLD_TICK_ON_BLIP = function(blip, toggle) invoker.call(0xCAC2031EBF79B1A8, blip, toggle) end,
	---  
	SHOW_FOR_SALE_ICON_ON_BLIP = function(blip, toggle) invoker.call(0x19BD6E3C0E16A8FA, blip, toggle) end,
	---Adds the GTA: Online player heading indicator to a blip.  
	SHOW_HEADING_INDICATOR_ON_BLIP = function(blip, toggle) invoker.call(0x5FBCA48327B914DF, blip, toggle) end,
	---Highlights a blip by a cyan color circle.  
	---  
	---Color can be changed with SET_BLIP_SECONDARY_COLOUR  
	SHOW_OUTLINE_INDICATOR_ON_BLIP = function(blip, toggle) invoker.call(0xB81656BC81FE24D1, blip, toggle) end,
	---Highlights a blip by a half cyan circle on the right side of the blip. https://i.imgur.com/FrV9M4e.png  
	---.Indicating that that player is a friend (in GTA:O). This color can not be changed.  
	---To toggle the left side (crew member indicator) of the half circle around the blip, use: `SHOW_CREW_INDICATOR_ON_BLIP`  
	SHOW_FRIEND_INDICATOR_ON_BLIP = function(blip, toggle) invoker.call(0x23C3EB807312F01A, blip, toggle) end,
	---Enables or disables the blue half circle https://i.imgur.com/iZes9Ec.png around the specified blip on the left side of the blip. This is used to indicate that the player is in your crew in GTA:O. Color is changeable by using `SET_BLIP_SECONDARY_COLOUR`.  
	SHOW_CREW_INDICATOR_ON_BLIP = function(blip, toggle) invoker.call(0xDCFB5D4DB8BF367E, blip, toggle) end,
	---Must be toggled before being queued for animation  
	SET_BLIP_EXTENDED_HEIGHT_THRESHOLD = function(blip, toggle) invoker.call(0xC4278F70131BAA6D, blip, toggle) end,
	---  
	SET_BLIP_SHORT_HEIGHT_THRESHOLD = function(p0, p1) invoker.call(0x4B5B620C9B59ED34, p0, p1) end,
	---  
	SET_BLIP_USE_HEIGHT_INDICATOR_ON_EDGE = function(blip, p1) invoker.call(0x2C9F302398E13141, blip, p1) end,
	---Makes a blip go small when off the minimap.  
	SET_BLIP_AS_MINIMAL_ON_EDGE = function(blip, toggle) invoker.call(0x2B6D467DAB714E8D, blip, toggle) end,
	---Enabling this on a radius blip will make it outline only. See https://cdn.discordapp.com/attachments/553235301632573459/575132227935928330/unknown.png  
	SET_RADIUS_BLIP_EDGE = function(blip, toggle) invoker.call(0x25615540D894B814, blip, toggle) end,
	---  
	DOES_BLIP_EXIST = function(blip) return invoker.call(0xA6DB27D19ECBB7DA, blip).bool end,
	---This native removes the current waypoint from the map.  
	---  
	---Example:  
	---C#:  
	---Function.Call(Hash.SET_WAYPOINT_OFF);  
	---  
	---C++:  
	---HUD::SET_WAYPOINT_OFF();  
	SET_WAYPOINT_OFF = function() invoker.call(0xA7E4E2D361C2627F) end,
	---  
	DELETE_WAYPOINTS_FROM_THIS_PLAYER = function() invoker.call(0xD8E694757BCEA8E9) end,
	---  
	REFRESH_WAYPOINT = function() invoker.call(0x81FA173F170560D1) end,
	---  
	IS_WAYPOINT_ACTIVE = function() return invoker.call(0x1DD1F58F493F1DA5).bool end,
	---  
	SET_NEW_WAYPOINT = function(x, y) invoker.call(0xFE43368D2AA4F2FC, x, y) end,
	---  
	SET_BLIP_BRIGHT = function(blip, toggle) invoker.call(0xB203913733F27884, blip, toggle) end,
	---As of b2189, the third parameter sets the color of the cone (before b2189 it was ignored). Note that it uses HUD colors, not blip colors.  
	SET_BLIP_SHOW_CONE = function(blip, toggle, hudColorIndex) invoker.call(0x13127EC3665E8EE1, blip, toggle, hudColorIndex) end,
	---Interesting fact: A hash collision for this is RESET_JETPACK_MODEL_SETTINGS  
	REMOVE_COP_BLIP_FROM_PED = function(ped) invoker.call(0xC594B315EDF2D4AF, ped) end,
	---  
	SETUP_FAKE_CONE_DATA = function(blip, p1, p2, p3, p4, p5, p6, p7, p8) invoker.call(0xF83D0FEBE75E62C9, blip, p1, p2, p3, p4, p5, p6, p7, p8) end,
	---  
	REMOVE_FAKE_CONE_DATA = function(blip) invoker.call(0x35A3CD97B2C0A6D2, blip) end,
	---  
	CLEAR_FAKE_CONE_ARRAY = function() invoker.call(0x8410C5E0CD847B9D) end,
	---Applies to new eBlipParams _BLIP_CHANGE_46* and _BLIP_CHANGE_47*  
	_SET_BLIP_GPS_ROUTE_DISPLAY_DISTANCE = function(blip, blipChangeParam46, blipChangeParam47) invoker.call(0x25D984CFB64ED6DE, blip, blipChangeParam46, blipChangeParam47) end,
	---This native is used to colorize certain map components like the army base at the top of the map.  
	---p2 appears to be always -1. If p2 is -1 then native wouldn't change the color. See https://gfycat.com/SkinnyPinkChupacabra  
	SET_MINIMAP_COMPONENT = function(componentId, toggle, overrideColor) return invoker.call(0x75A9A10948D1DEA6, componentId, toggle, overrideColor).bool end,
	---  
	SET_MINIMAP_SONAR_SWEEP = function(toggle) invoker.call(0x6B50FC8749632EC1, toggle) end,
	---  
	SHOW_ACCOUNT_PICKER = function() invoker.call(0x60E892BA4F5BDCA4) end,
	---  
	GET_MAIN_PLAYER_BLIP_ID = function() return invoker.call(0xDCD4EC3F419D02FA).int end,
	---  
	SET_PM_WARNINGSCREEN_ACTIVE = function(p0) invoker.call(0x41350B4FC28E3941, p0) end,
	---  
	HIDE_LOADING_ON_FADE_THIS_FRAME = function() invoker.call(0x4B0311D3CDC4648F) end,
	---List of interior hashes: https://pastebin.com/1FUyXNqY  
	---Not for every interior zoom > 0 available.  
	SET_RADAR_AS_INTERIOR_THIS_FRAME = function(interior, x, y, z, zoom) invoker.call(0x59E727A1C9D3E31A, interior, x, y, z, zoom) end,
	---  
	SET_INSIDE_VERY_SMALL_INTERIOR = function(toggle) invoker.call(0x504DFE62A1692296, toggle) end,
	---  
	SET_INSIDE_VERY_LARGE_INTERIOR = function(toggle) invoker.call(0x7EC8ABA5E74B3D7A, toggle) end,
	---  
	SET_RADAR_AS_EXTERIOR_THIS_FRAME = function() invoker.call(0xE81B7D2A3DAB2D81) end,
	---Sets the position of the arrow icon representing the player on both the minimap and world map.  
	---  
	---Too bad this wouldn't work over the network (obviously not). Could spoof where we would be.  
	SET_FAKE_PAUSEMAP_PLAYER_POSITION_THIS_FRAME = function(x, y) invoker.call(0x77E2DD177910E1CF, x, y) end,
	---  
	SET_FAKE_GPS_PLAYER_POSITION_THIS_FRAME = function(x, y, z) invoker.call(0xA17784FCA9548D15, x, y, z) end,
	---  
	IS_PAUSEMAP_IN_INTERIOR_MODE = function() return invoker.call(0x9049FE339D5F6F6F).bool end,
	---  
	HIDE_MINIMAP_EXTERIOR_MAP_THIS_FRAME = function() invoker.call(0x5FBAE526203990C9) end,
	---  
	HIDE_MINIMAP_INTERIOR_MAP_THIS_FRAME = function() invoker.call(0x20FE7FDFEEAD38C0) end,
	---Toggles the Cayo Perico map.  
	SET_USE_ISLAND_MAP = function(toggle) invoker.call(0x5E1460624D194A38, toggle) end,
	---  
	_SET_PAUSE_EXTERIOR_RENDERING_WHILE_IN_INTERIOR = function() invoker.call(0x35CCE12EAECB4A51) end,
	---When calling this, the current frame will have the players "arrow icon" be focused on the dead center of the radar.  
	DONT_TILT_MINIMAP_THIS_FRAME = function() invoker.call(0x6D14BFDC33B34F55) end,
	---  
	DONT_ZOOM_MINIMAP_WHEN_RUNNING_THIS_FRAME = function() invoker.call(0x89DA85D949CE57A0) end,
	---  
	DONT_ZOOM_MINIMAP_WHEN_SNIPING_THIS_FRAME = function() invoker.call(0x55F5A5F07134DE60) end,
	---  
	SET_WIDESCREEN_FORMAT = function(p0) invoker.call(0xC3B07BA00A83B0F1, p0) end,
	---  
	DISPLAY_AREA_NAME = function(toggle) invoker.call(0x276B6CE369C33678, toggle) end,
	---"DISPLAY_CASH(false);" makes the cash amount render on the screen when appropriate  
	---"DISPLAY_CASH(true);" disables cash amount rendering  
	DISPLAY_CASH = function(toggle) invoker.call(0x96DEC8D5430208B7, toggle) end,
	---Related to displaying cash on the HUD  
	---Always called before HUD::CHANGE_FAKE_MP_CASH in decompiled scripts  
	USE_FAKE_MP_CASH = function(toggle) invoker.call(0x170F541E1CADD1DE, toggle) end,
	---Displays cash change notifications on HUD.  
	CHANGE_FAKE_MP_CASH = function(cash, bank) invoker.call(0x0772DF77852C2E30, cash, bank) end,
	---  
	DISPLAY_AMMO_THIS_FRAME = function(display) invoker.call(0xA5E78BA2B1331C55, display) end,
	---Displays the crosshair for this frame.  
	DISPLAY_SNIPER_SCOPE_THIS_FRAME = function() invoker.call(0x73115226F4814E62) end,
	---Hides HUD and radar this frame and prohibits switching to other weapons (or accessing the weapon wheel)  
	HIDE_HUD_AND_RADAR_THIS_FRAME = function() invoker.call(0x719FF505F097FD20) end,
	---Controls whether to display 'Cash'/'Bank' next to the money balance HUD in Multiplayer (https://i.imgur.com/MiYUtNl.png)  
	ALLOW_DISPLAY_OF_MULTIPLAYER_CASH_TEXT = function(allow) invoker.call(0xE67C6DFD386EA5E7, allow) end,
	---  
	SET_MULTIPLAYER_WALLET_CASH = function() invoker.call(0xC2D15BEF167E27BC) end,
	---  
	REMOVE_MULTIPLAYER_WALLET_CASH = function() invoker.call(0x95CF81BD06EE1887) end,
	---  
	SET_MULTIPLAYER_BANK_CASH = function() invoker.call(0xDD21B55DF695CD0A) end,
	---  
	REMOVE_MULTIPLAYER_BANK_CASH = function() invoker.call(0xC7C6789AA1CFEDD0) end,
	---This native does absolutely nothing, just a nullsub  
	SET_MULTIPLAYER_HUD_CASH = function(p0, p1) invoker.call(0xFD1D220394BCB824, p0, p1) end,
	---Removes multiplayer cash hud each frame  
	REMOVE_MULTIPLAYER_HUD_CASH = function() invoker.call(0x968F270E39141ECA) end,
	---  
	HIDE_HELP_TEXT_THIS_FRAME = function() invoker.call(0xD46923FC481CA285) end,
	---  
	IS_IME_IN_PROGRESS = function() return invoker.call(0x801879A9B4F4B2FB).bool end,
	---The messages are localized strings.  
	---Examples:  
	---"No_bus_money"  
	---"Enter_bus"  
	---"Tour_help"  
	---"LETTERS_HELP2"  
	---"Dummy"  
	---  
	---**The bool appears to always be false (if it even is a bool, as it's represented by a zero)**  
	-----------  
	---p1 doesn't seem to make a difference, regardless of the state it's in.   
	---  
	---  
	---picture of where on the screen this is displayed?   
	DISPLAY_HELP_TEXT_THIS_FRAME = function(message, p1) invoker.call(0x960C9FF8F616E41C, message, p1) end,
	---Forces the weapon wheel to show/hide.  
	HUD_FORCE_WEAPON_WHEEL = function(show) invoker.call(0xEB354E5376BC81A7, show) end,
	---Displays "blazer_wheels_up" and "blazer_wheels_down" "weapon" icons when switching between jetski and quadbike modes. Works only on vehicles using "VEHICLE_TYPE_AMPHIBIOUS_QUADBIKE" vehicle type. Needs to be called every time prior to switching modes, otherwise the icon will only appear when switching modes once.  
	HUD_FORCE_SPECIAL_VEHICLE_WEAPON_WHEEL = function() invoker.call(0x488043841BBE156F) end,
	---Calling this each frame, stops the player from receiving a weapon via the weapon wheel.  
	HUD_SUPPRESS_WEAPON_WHEEL_RESULTS_THIS_FRAME = function() invoker.call(0x0AFC4AF510774B47) end,
	---Returns the weapon hash to the selected/highlighted weapon in the wheel  
	HUD_GET_WEAPON_WHEEL_CURRENTLY_HIGHLIGHTED = function() return invoker.call(0xA48931185F0536FE).int end,
	---Set the active slotIndex in the wheel weapon to the slot associated with the provided Weapon hash  
	HUD_SET_WEAPON_WHEEL_TOP_SLOT = function(weaponHash) invoker.call(0x72C1056D678BB7D8, weaponHash) end,
	---Returns the weapon hash active in a specific weapon wheel slotList  
	HUD_GET_WEAPON_WHEEL_TOP_SLOT = function(weaponTypeIndex) return invoker.call(0xA13E93403F26C812, weaponTypeIndex).int end,
	---Sets a global that disables many weapon input tasks (shooting, aiming, etc.). Does not work with vehicle weapons, only used in selector.ysc  
	HUD_SHOWING_CHARACTER_SWITCH_SELECTION = function(toggle) invoker.call(0x14C9FDCC41F81F63, toggle) end,
	---Only the script that originally called SET_GPS_FLAGS can set them again. Another script cannot set the flags, until the first script that called it has called CLEAR_GPS_FLAGS.  
	---  
	---Doesn't seem like the flags are actually read by the game at all.  
	SET_GPS_FLAGS = function(p0, p1) invoker.call(0x5B440763A4C8D15B, p0, p1) end,
	---Clears the GPS flags. Only the script that originally called SET_GPS_FLAGS can clear them.  
	---  
	---Doesn't seem like the flags are actually read by the game at all.  
	CLEAR_GPS_FLAGS = function() invoker.call(0x21986729D6A3A830) end,
	---  
	SET_RACE_TRACK_RENDER = function(toggle) invoker.call(0x1EAC5F91BCBC5073, toggle) end,
	---Does the same as SET_RACE_TRACK_RENDER(false);  
	CLEAR_GPS_RACE_TRACK = function() invoker.call(0x7AA5B4CE533C858B) end,
	---Starts a new GPS custom-route, allowing you to plot lines on the map.  
	---Lines are drawn directly between points.  
	---The GPS custom route works like the GPS multi route, except it does not follow roads.  
	---Example result: https://i.imgur.com/BDm5pzt.png  
	---hudColor: The HUD color of the GPS path.  
	---displayOnFoot: Draws the path regardless if the player is in a vehicle or not.  
	---followPlayer: Draw the path partially between the previous and next point based on the players position between them. When false, the GPS appears to not disappear after the last leg is completed.  
	START_GPS_CUSTOM_ROUTE = function(hudColor, displayOnFoot, followPlayer) invoker.call(0xDB34E8D56FC13B08, hudColor, displayOnFoot, followPlayer) end,
	---  
	ADD_POINT_TO_GPS_CUSTOM_ROUTE = function(x, y, z) invoker.call(0x311438A071DD9B1A, x, y, z) end,
	---radarThickness: The width of the GPS route on the radar  
	---mapThickness: The width of the GPS route on the map  
	SET_GPS_CUSTOM_ROUTE_RENDER = function(toggle, radarThickness, mapThickness) invoker.call(0x900086F371220B6F, toggle, radarThickness, mapThickness) end,
	---  
	CLEAR_GPS_CUSTOM_ROUTE = function() invoker.call(0xE6DE0561D9232A64) end,
	---Starts a new GPS multi-route, allowing you to create custom GPS paths.  
	---GPS functions like the waypoint, except it can contain multiple points it's forced to go through.  
	---Once the player has passed a point, the GPS will no longer force its path through it.  
	---  
	---Works independently from the player-placed waypoint and blip routes.  
	---Example result: https://i.imgur.com/ZZHQatX.png  
	---hudColor: The HUD color of the GPS path.  
	---routeFromPlayer: Makes the GPS draw a path from the player to the next point, rather than the original path from the previous point.  
	---displayOnFoot: Draws the GPS path regardless if the player is in a vehicle or not.  
	START_GPS_MULTI_ROUTE = function(hudColor, routeFromPlayer, displayOnFoot) invoker.call(0x3D3D15AF7BCAAF83, hudColor, routeFromPlayer, displayOnFoot) end,
	---  
	ADD_POINT_TO_GPS_MULTI_ROUTE = function(x, y, z) invoker.call(0xA905192A6781C41B, x, y, z) end,
	---  
	SET_GPS_MULTI_ROUTE_RENDER = function(toggle) invoker.call(0x3DDA37128DD1ACA8, toggle) end,
	---Does the same as SET_GPS_MULTI_ROUTE_RENDER(false);  
	CLEAR_GPS_MULTI_ROUTE = function() invoker.call(0x67EEDEA1B9BAFD94) end,
	---  
	CLEAR_GPS_PLAYER_WAYPOINT = function() invoker.call(0xFF4FB7C8CDFA3DA7) end,
	---  
	SET_GPS_FLASHES = function(toggle) invoker.call(0x320D0E0D936A0E9B, toggle) end,
	---  
	SET_PLAYER_ICON_COLOUR = function(color) invoker.call(0x7B21E0BB01E8224A, color) end,
	---adds a short flash to the Radar/Minimap  
	---Usage: UI.FLASH_MINIMAP_DISPLAY  
	FLASH_MINIMAP_DISPLAY = function() invoker.call(0xF2DD778C22B15BDA) end,
	---  
	FLASH_MINIMAP_DISPLAY_WITH_COLOR = function(hudColorIndex) invoker.call(0x6B1DE27EE78E6A19, hudColorIndex) end,
	---  
	TOGGLE_STEALTH_RADAR = function(toggle) invoker.call(0x6AFDFB93754950C7, toggle) end,
	---  
	SET_MINIMAP_IN_SPECTATOR_MODE = function(toggle, ped) invoker.call(0x1A5CD7752DD28CD3, toggle, ped) end,
	---  
	SET_MISSION_NAME = function(p0, name) invoker.call(0x5F28ECF5FC84772F, p0, name) end,
	---  
	SET_MISSION_NAME_FOR_UGC_MISSION = function(p0, name) invoker.call(0xE45087D85F468BC2, p0, name) end,
	---  
	SET_DESCRIPTION_FOR_UGC_MISSION_EIGHT_STRINGS = function(p0, p1, p2, p3, p4, p5, p6, p7, p8) invoker.call(0x817B86108EB94E51, p0, p1, p2, p3, p4, p5, p6, p7, p8) end,
	---  
	SET_MINIMAP_BLOCK_WAYPOINT = function(toggle) invoker.call(0x58FADDED207897DC, toggle) end,
	---Toggles the North Yankton map  
	SET_MINIMAP_IN_PROLOGUE = function(toggle) invoker.call(0x9133955F1A2DA957, toggle) end,
	---This native does absolutely nothing on PC master builds, just a nullsub.  
	SET_MINIMAP_BACKGROUND_HIDDEN = function(toggle) invoker.call(0xB09D42557C45EBA1, toggle) end,
	---If true, the entire map will be revealed.  
	---  
	---FOW = Fog of War  
	SET_MINIMAP_HIDE_FOW = function(toggle) invoker.call(0xF8DEE0A5600CBB93, toggle) end,
	---  
	GET_MINIMAP_FOW_DISCOVERY_RATIO = function() return invoker.call(0xE0130B41D3CF4574).float end,
	---  
	GET_MINIMAP_FOW_COORDINATE_IS_REVEALED = function(x, y, z) return invoker.call(0x6E31B91145873922, x, y, z).bool end,
	---  
	SET_MINIMAP_FOW_DO_NOT_UPDATE = function(p0) invoker.call(0x62E849B7EB28E770, p0) end,
	---Up to eight coordinates may be revealed per frame  
	SET_MINIMAP_FOW_REVEAL_COORDINATE = function(x, y, z) invoker.call(0x0923DBF87DFF735E, x, y, z) end,
	---Not much is known so far on what it does _exactly_.  
	---All I know for sure is that it draws the specified hole ID on the pause menu map as well as on the mini-map/radar. This native also seems to change some other things related to the pause menu map's behaviour, for example: you can no longer set waypoints, the pause menu map starts up in a 'zoomed in' state. This native does not need to be executed every tick.  
	---You need to center the minimap manually as well as change/lock it's zoom and angle in order for it to appear correctly on the minimap.  
	---You'll also need to use the `GOLF` scaleform in order to get the correct minmap border to show up.  
	---Use `0x35edd5b2e3ff01c0` to reset the map when you no longer want to display any golf holes (you still need to unlock zoom, position and angle of the radar manually after calling this).  
	SET_MINIMAP_GOLF_COURSE = function(hole) invoker.call(0x71BDB63DBAF8DA59, hole) end,
	---  
	SET_MINIMAP_GOLF_COURSE_OFF = function() invoker.call(0x35EDD5B2E3FF01C0) end,
	---Locks the minimap to the specified angle in integer degrees.  
	---  
	---angle: The angle in whole degrees. If less than 0 or greater than 360, unlocks the angle.  
	LOCK_MINIMAP_ANGLE = function(angle) invoker.call(0x299FAEBB108AE05B, angle) end,
	---  
	UNLOCK_MINIMAP_ANGLE = function() invoker.call(0x8183455E16C42E3A) end,
	---Locks the minimap to the specified world position.  
	LOCK_MINIMAP_POSITION = function(x, y) invoker.call(0x1279E861A329E73F, x, y) end,
	---  
	UNLOCK_MINIMAP_POSITION = function() invoker.call(0x3E93E06DB8EF1F30) end,
	---Argument must be 0.0f or above 38.0f, or it will be ignored.  
	SET_FAKE_MINIMAP_MAX_ALTIMETER_HEIGHT = function(altitude, p1, p2) invoker.call(0xD201F3FF917A506D, altitude, p1, p2) end,
	---  
	SET_HEALTH_HUD_DISPLAY_VALUES = function(health, capacity, wasAdded) invoker.call(0x3F5CC444DCAAA8F2, health, capacity, wasAdded) end,
	---  
	SET_MAX_HEALTH_HUD_DISPLAY = function(maximumValue) invoker.call(0x975D66A0BC17064C, maximumValue) end,
	---  
	SET_MAX_ARMOUR_HUD_DISPLAY = function(maximumValue) invoker.call(0x06A320535F5F0248, maximumValue) end,
	---Toggles the big minimap state like in GTA:Online.  
	SET_BIGMAP_ACTIVE = function(toggleBigMap, showFullMap) invoker.call(0x231C8F89D0539D8F, toggleBigMap, showFullMap) end,
	---Full list of components below  
	---  
	---HUD = 0;  
	---HUD_WANTED_STARS = 1;  
	---HUD_WEAPON_ICON = 2;  
	---HUD_CASH = 3;  
	---HUD_MP_CASH = 4;  
	---HUD_MP_MESSAGE = 5;  
	---HUD_VEHICLE_NAME = 6;  
	---HUD_AREA_NAME = 7;  
	---HUD_VEHICLE_CLASS = 8;  
	---HUD_STREET_NAME = 9;  
	---HUD_HELP_TEXT = 10;  
	---HUD_FLOATING_HELP_TEXT_1 = 11;  
	---HUD_FLOATING_HELP_TEXT_2 = 12;  
	---HUD_CASH_CHANGE = 13;  
	---HUD_RETICLE = 14;  
	---HUD_SUBTITLE_TEXT = 15;  
	---HUD_RADIO_STATIONS = 16;  
	---HUD_SAVING_GAME = 17;  
	---HUD_GAME_STREAM = 18;  
	---HUD_WEAPON_WHEEL = 19;  
	---HUD_WEAPON_WHEEL_STATS = 20;  
	---MAX_HUD_COMPONENTS = 21;  
	---MAX_HUD_WEAPONS = 22;  
	---MAX_SCRIPTED_HUD_COMPONENTS = 141;  
	IS_HUD_COMPONENT_ACTIVE = function(id) return invoker.call(0xBC4C9EA5391ECC0D, id).bool end,
	---  
	IS_SCRIPTED_HUD_COMPONENT_ACTIVE = function(id) return invoker.call(0xDD100EB17A94FF65, id).bool end,
	---  
	HIDE_SCRIPTED_HUD_COMPONENT_THIS_FRAME = function(id) invoker.call(0xE374C498D8BADC14, id) end,
	---  
	SHOW_SCRIPTED_HUD_COMPONENT_THIS_FRAME = function(id) invoker.call(0x4F38DCA127DAAEA2, id) end,
	---  
	IS_SCRIPTED_HUD_COMPONENT_HIDDEN_THIS_FRAME = function(id) return invoker.call(0x09C0403ED9A751C2, id).bool end,
	---This function hides various HUD (Heads-up Display) components.  
	---Listed below are the integers and the corresponding HUD component.  
	---- 1 : WANTED_STARS  
	---- 2 : WEAPON_ICON  
	---- 3 : CASH  
	---- 4 : MP_CASH  
	---- 5 : MP_MESSAGE  
	---- 6 : VEHICLE_NAME  
	---- 7 : AREA_NAME  
	---- 8 : VEHICLE_CLASS  
	---- 9 : STREET_NAME  
	---- 10 : HELP_TEXT  
	---- 11 : FLOATING_HELP_TEXT_1  
	---- 12 : FLOATING_HELP_TEXT_2  
	---- 13 : CASH_CHANGE  
	---- 14 : RETICLE  
	---- 15 : SUBTITLE_TEXT  
	---- 16 : RADIO_STATIONS  
	---- 17 : SAVING_GAME  
	---- 18 : GAME_STREAM  
	---- 19 : WEAPON_WHEEL  
	---- 20 : WEAPON_WHEEL_STATS  
	---- 21 : HUD_COMPONENTS  
	---- 22 : HUD_WEAPONS  
	---  
	---These integers also work for the `SHOW_HUD_COMPONENT_THIS_FRAME` native, but instead shows the HUD Component.  
	HIDE_HUD_COMPONENT_THIS_FRAME = function(id) invoker.call(0x6806C51AD12B83B8, id) end,
	---This function hides various HUD (Heads-up Display) components.  
	---Listed below are the integers and the corresponding HUD component.  
	---- 1 : WANTED_STARS  
	---- 2 : WEAPON_ICON  
	---- 3 : CASH  
	---- 4 : MP_CASH  
	---- 5 : MP_MESSAGE  
	---- 6 : VEHICLE_NAME  
	---- 7 : AREA_NAME  
	---- 8 : VEHICLE_CLASS  
	---- 9 : STREET_NAME  
	---- 10 : HELP_TEXT  
	---- 11 : FLOATING_HELP_TEXT_1  
	---- 12 : FLOATING_HELP_TEXT_2  
	---- 13 : CASH_CHANGE  
	---- 14 : RETICLE  
	---- 15 : SUBTITLE_TEXT  
	---- 16 : RADIO_STATIONS  
	---- 17 : SAVING_GAME  
	---- 18 : GAME_STREAM  
	---- 19 : WEAPON_WHEEL  
	---- 20 : WEAPON_WHEEL_STATS  
	---- 21 : HUD_COMPONENTS  
	---- 22 : HUD_WEAPONS  
	---  
	---These integers also work for the `HIDE_HUD_COMPONENT_THIS_FRAME` native, but instead hides the HUD Component.  
	SHOW_HUD_COMPONENT_THIS_FRAME = function(id) invoker.call(0x0B4DF1FA60C0E664, id) end,
	---Hides area and vehicle name HUD components for one frame.  
	HIDE_STREET_AND_CAR_NAMES_THIS_FRAME = function() invoker.call(0xA4DEDE28B1814289) end,
	---  
	RESET_RETICULE_VALUES = function() invoker.call(0x12782CE0A636E9F0) end,
	---  
	RESET_HUD_COMPONENT_VALUES = function(id) invoker.call(0x450930E616475D0D, id) end,
	---  
	SET_HUD_COMPONENT_POSITION = function(id, x, y) invoker.call(0xAABB1F56E2A17CED, id, x, y) end,
	---  
	GET_HUD_COMPONENT_POSITION = function(id) return invoker.call(0x223CA69A8C4417FD, id).scr_vec3 end,
	---This native does absolutely nothing, just a nullsub  
	CLEAR_REMINDER_MESSAGE = function() invoker.call(0xB57D8DD645CFA2CF) end,
	---World to relative screen coords, this world to screen will keep the text on screen. Was named _GET_SCREEN_COORD_FROM_WORLD_COORD, but this conflicts with 0x34E82F05DF2974F5. As that hash actually matches GET_SCREEN_COORD_FROM_WORLD_COORD that one supercedes and this one was renamed to _GET_2D_COORD_FROM_3D_COORD  
	GET_HUD_SCREEN_POSITION_FROM_WORLD_POSITION = function(worldX, worldY, worldZ, screenX, screenY) return invoker.call(0xF9904D11F1ACBEC3, worldX, worldY, worldZ, screenX, screenY).int end,
	---Shows a menu for reporting UGC content.  
	OPEN_REPORTUGC_MENU = function() invoker.call(0x523A590C1A3CC0D3) end,
	---  
	FORCE_CLOSE_REPORTUGC_MENU = function() invoker.call(0xEE4C0E6DBC6F2C6F) end,
	---  
	IS_REPORTUGC_MENU_OPEN = function() return invoker.call(0x9135584D09A3437E).bool end,
	---  
	IS_FLOATING_HELP_TEXT_ON_SCREEN = function(hudIndex) return invoker.call(0x2432784ACA090DA4, hudIndex).bool end,
	---  
	SET_FLOATING_HELP_TEXT_SCREEN_POSITION = function(hudIndex, x, y) invoker.call(0x7679CC1BCEBE3D4C, hudIndex, x, y) end,
	---  
	SET_FLOATING_HELP_TEXT_WORLD_POSITION = function(hudIndex, x, y, z) invoker.call(0x784BA7E0ECEB4178, hudIndex, x, y, z) end,
	---  
	SET_FLOATING_HELP_TEXT_TO_ENTITY = function(hudIndex, entity, offsetX, offsetY) invoker.call(0xB094BC1DB4018240, hudIndex, entity, offsetX, offsetY) end,
	---  
	SET_FLOATING_HELP_TEXT_STYLE = function(hudIndex, p1, p2, p3, p4, p5) invoker.call(0x788E7FD431BD67F1, hudIndex, p1, p2, p3, p4, p5) end,
	---  
	CLEAR_FLOATING_HELP = function(hudIndex, p1) invoker.call(0x50085246ABD3FEFA, hudIndex, p1) end,
	---clanFlag: takes a number 0-5  
	CREATE_MP_GAMER_TAG_WITH_CREW_COLOR = function(player, username, pointedClanTag, isRockstarClan, clanTag, clanFlag, r, g, b) invoker.call(0x6DD05E9D83EFA4C9, player, username, pointedClanTag, isRockstarClan, clanTag, clanFlag, r, g, b) end,
	---  
	IS_MP_GAMER_TAG_MOVIE_ACTIVE = function() return invoker.call(0x6E0EB3EB47C8D7AA).bool end,
	---clanFlag: takes a number 0-5  
	CREATE_FAKE_MP_GAMER_TAG = function(ped, username, pointedClanTag, isRockstarClan, clanTag, clanFlag) return invoker.call(0xBFEFE3321A3F5015, ped, username, pointedClanTag, isRockstarClan, clanTag, clanFlag).int end,
	---  
	REMOVE_MP_GAMER_TAG = function(gamerTagId) invoker.call(0x31698AA80E0223F8, gamerTagId) end,
	---  
	IS_MP_GAMER_TAG_ACTIVE = function(gamerTagId) return invoker.call(0x4E929E7A5796FD26, gamerTagId).bool end,
	---  
	IS_MP_GAMER_TAG_FREE = function(gamerTagId) return invoker.call(0x595B5178E412E199, gamerTagId).bool end,
	---enum eMpGamerTagComponent  
	---{  
	---	MP_TAG_GAMER_NAME,  
	---	MP_TAG_CREW_TAG,  
	---	MP_TAG_HEALTH_ARMOUR,  
	---	MP_TAG_BIG_TEXT,  
	---	MP_TAG_AUDIO_ICON,  
	---	MP_TAG_USING_MENU,  
	---	MP_TAG_PASSIVE_MODE,  
	---	MP_TAG_WANTED_STARS,  
	---	MP_TAG_DRIVER,  
	---	MP_TAG_CO_DRIVER,  
	---	MP_TAG_TAGGED,  
	---	MP_TAG_GAMER_NAME_NEARBY,  
	---	MP_TAG_ARROW,  
	---	MP_TAG_PACKAGES,  
	---	MP_TAG_INV_IF_PED_FOLLOWING,  
	---	MP_TAG_RANK_TEXT,  
	---	MP_TAG_TYPING,  
	---	MP_TAG_BAG_LARGE,  
	---	MP_TAG_ARROW,  
	---	MP_TAG_GANG_CEO,  
	---	MP_TAG_GANG_BIKER,  
	---	MP_TAG_BIKER_ARROW,  
	---	MP_TAG_MC_ROLE_PRESIDENT,  
	---	MP_TAG_MC_ROLE_VICE_PRESIDENT,  
	---	MP_TAG_MC_ROLE_ROAD_CAPTAIN,  
	---	MP_TAG_MC_ROLE_SARGEANT,  
	---	MP_TAG_MC_ROLE_ENFORCER,  
	---	MP_TAG_MC_ROLE_PROSPECT,  
	---	MP_TAG_TRANSMITTER,  
	---	MP_TAG_BOMB  
	---};  
	SET_MP_GAMER_TAG_VISIBILITY = function(gamerTagId, component, toggle, p3) invoker.call(0x63BB75ABEDC1F6A0, gamerTagId, component, toggle, p3) end,
	---  
	SET_ALL_MP_GAMER_TAGS_VISIBILITY = function(gamerTagId, toggle) invoker.call(0xEE76FF7E6A0166B0, gamerTagId, toggle) end,
	---Displays a bunch of icons above the players name, and level, and their name twice  
	SET_MP_GAMER_TAGS_SHOULD_USE_VEHICLE_HEALTH = function(gamerTagId, toggle) invoker.call(0xA67F9C46D612B6F1, gamerTagId, toggle) end,
	---  
	SET_MP_GAMER_TAGS_SHOULD_USE_POINTS_HEALTH = function(gamerTagId, toggle) invoker.call(0xD29EC58C2F6B5014, gamerTagId, toggle) end,
	---  
	SET_MP_GAMER_TAGS_POINT_HEALTH = function(gamerTagId, value, maximumValue) invoker.call(0x1563FE35E9928E67, gamerTagId, value, maximumValue) end,
	---Sets a gamer tag's component colour  
	---  
	---gamerTagId is obtained using for example CREATE_FAKE_MP_GAMER_TAG  
	---Ranges from 0 to 255. 0 is grey health bar, ~50 yellow, 200 purple.  
	SET_MP_GAMER_TAG_COLOUR = function(gamerTagId, component, hudColorIndex) invoker.call(0x613ED644950626AE, gamerTagId, component, hudColorIndex) end,
	---Ranges from 0 to 255. 0 is grey health bar, ~50 yellow, 200 purple.  
	---Should be enabled as flag (2). Has 0 opacity by default.  
	---  
	---- This was _SET_MP_GAMER_TAG_HEALTH_BAR_COLOR,  
	----> Rockstar use the EU spelling of 'color' so I hashed the same name with COLOUR and it came back as the correct hash, so it has been corrected above.  
	SET_MP_GAMER_TAG_HEALTH_BAR_COLOUR = function(gamerTagId, hudColorIndex) invoker.call(0x3158C77A7E888AB4, gamerTagId, hudColorIndex) end,
	---Sets flag's sprite transparency. 0-255.  
	SET_MP_GAMER_TAG_ALPHA = function(gamerTagId, component, alpha) invoker.call(0xD48FE545CD46F857, gamerTagId, component, alpha) end,
	---displays wanted star above head  
	SET_MP_GAMER_TAG_WANTED_LEVEL = function(gamerTagId, wantedlvl) invoker.call(0xCF228E2AA03099C3, gamerTagId, wantedlvl) end,
	---  
	SET_MP_GAMER_TAG_NUM_PACKAGES = function(gamerTagId, p1) invoker.call(0x9C16459B2324B2CF, gamerTagId, p1) end,
	---  
	SET_MP_GAMER_TAG_NAME = function(gamerTagId, string) invoker.call(0xDEA2B8283BAA3944, gamerTagId, string) end,
	---  
	IS_UPDATING_MP_GAMER_TAG_NAME_AND_CREW_DETAILS = function(gamerTagId) return invoker.call(0xEB709A36958ABE0D, gamerTagId).bool end,
	---  
	SET_MP_GAMER_TAG_BIG_TEXT = function(gamerTagId, string) invoker.call(0x7B7723747CCB55B6, gamerTagId, string) end,
	---  
	GET_CURRENT_WEBPAGE_ID = function() return invoker.call(0x01A358D9128B7A86).int end,
	---  
	GET_CURRENT_WEBSITE_ID = function() return invoker.call(0x97D47996FC48CBAD).int end,
	---Returns the ActionScript flagValue.  
	---ActionScript flags are global flags that scaleforms use  
	---Flags found during testing  
	---0: Returns 1 if the web_browser keyboard is open, otherwise 0  
	---1: Returns 1 if the player has clicked back twice on the opening page, otherwise 0 (web_browser)  
	---2: Returns how many links the player has clicked in the web_browser scaleform, returns 0 when the browser gets closed  
	---9: Returns the current selection on the mobile phone scaleform  
	---  
	---There are 20 flags in total.  
	GET_GLOBAL_ACTIONSCRIPT_FLAG = function(flagIndex) return invoker.call(0xE3B05614DCE1D014, flagIndex).int end,
	---  
	RESET_GLOBAL_ACTIONSCRIPT_FLAG = function(flagIndex) invoker.call(0xB99C4E4D9499DF29, flagIndex) end,
	---  
	IS_WARNING_MESSAGE_READY_FOR_CONTROL = function() return invoker.call(0xAF42195A42C63BBA).bool end,
	---You can only use text entries. No custom text.  
	---  
	---Example: SET_WARNING_MESSAGE("t20", 3, "adder", false, -1, 0, 0, true);  
	---errorCode: shows an error code at the bottom left if nonzero  
	SET_WARNING_MESSAGE = function(titleMsg, flags, promptMsg, p3, p4, p5, p6, showBackground, errorCode) invoker.call(0x7B1776B3B53F8D74, titleMsg, flags, promptMsg, p3, p4, p5, p6, showBackground, errorCode) end,
	---Shows a warning message on screen with a header.  
	---Note: You can only use text entries. No custom text. You can recreate this easily with scaleforms.  
	---Example: https://i.imgur.com/ITJt8bJ.png  
	SET_WARNING_MESSAGE_WITH_HEADER = function(entryHeader, entryLine1, instructionalKey, entryLine2, p4, p5, showBackground, p7, p8, p9) invoker.call(0xDC38CC1E35B6A5D7, entryHeader, entryLine1, instructionalKey, entryLine2, p4, p5, showBackground, p7, p8, p9) end,
	---You can use this native for custom input, without having to use any scaleform-related natives.  
	---The native must be called on tick.  
	---The entryHeader must be a valid label.  
	---For Single lines use JL_INVITE_N as entryLine1, JL_INVITE_ND for multiple.  
	---Notes:  
	---- additionalIntInfo: replaces first occurrence of ~1~ in provided label with an integer  
	---- additionalTextInfoLine1: replaces first occurrence of ~a~ in provided label, with your custom text  
	---- additionalTextInfoLine2: replaces second occurrence of ~a~ in provided label, with your custom text  
	---- showBackground: shows black background of the warning screen  
	---- errorCode: shows an error code at the bottom left if nonzero  
	---Example of usage:  
	---SET_WARNING_MESSAGE_WITH_HEADER_AND_SUBSTRING_FLAGS("ALERT", "JL_INVITE_ND", 66, "", true, -1, -1, "Testing line 1", "Testing line 2", true, 0);  
	---Screenshot:  
	---https://imgur.com/a/IYA7vJ8  
	SET_WARNING_MESSAGE_WITH_HEADER_AND_SUBSTRING_FLAGS = function(entryHeader, entryLine1, instructionalKey, entryLine2, p4, p5, additionalIntInfo, additionalTextInfoLine1, additionalTextInfoLine2, showBackground, errorCode) invoker.call(0x701919482C74B5AB, entryHeader, entryLine1, instructionalKey, entryLine2, p4, p5, additionalIntInfo, additionalTextInfoLine1, additionalTextInfoLine2, showBackground, errorCode) end,
	---  
	SET_WARNING_MESSAGE_WITH_HEADER_EXTENDED = function(entryHeader, entryLine1, flags, entryLine2, p4, p5, p6, p7, showBg, p9, p10) invoker.call(0x38B55259C2E078ED, entryHeader, entryLine1, flags, entryLine2, p4, p5, p6, p7, showBg, p9, p10) end,
	---labelTitle: Label of the alert's title.  
	---labelMsg: Label of the alert's message.  
	---p2: This is an enum, check the description for a list.  
	---p3: This is an enum, check the description for a list.  
	---labelMsg2: Label of another message line  
	---p5: usually 0  
	---p6: usually -1  
	---p7: usually 0  
	---p8: unknown label  
	---p9: unknown label  
	---background: Set to anything other than 0 or false (even any string) and it will draw a background. Setting it to 0 or false will draw no background.  
	---errorCode: Error code, shown at the bottom left if set to value other than 0.  
	---  
	---instructionalKey enum list:  
	---Buttons = {  
	---      Empty = 0,  
	---      Select = 1, -- (RETURN)  
	---      Ok = 2, -- (RETURN)  
	---      Yes = 4, -- (RETURN)  
	---      Back = 8, -- (ESC)  
	---      Cancel = 16, -- (ESC)  
	---      No = 32, -- (ESC)  
	---      RetrySpace = 64, -- (SPACE)  
	---      Restart = 128, -- (SPACE)  
	---      Skip = 256, -- (SPACE)  
	---      Quit = 512, -- (ESC)  
	---      Adjust = 1024, -- (ARROWS)  
	---      SpaceKey = 2048, -- (SPACE)  
	---      Share = 4096, -- (SPACE)  
	---      SignIn = 8192, -- (SPACE)  
	---      Continue = 16384, -- (RETURN)  
	---      AdjustLeftRight = 32768, -- (SCROLL L/R)  
	---      AdjustUpDown = 65536, -- (SCROLL U/D)  
	---      Overwrite = 131072, -- (SPACE)  
	---      SocialClubSignup = 262144, -- (RETURN)  
	---      Confirm = 524288, -- (RETURN)  
	---      Queue = 1048576, -- (RETURN)  
	---      RetryReturn = 2097152, -- (RETURN)  
	---      BackEsc = 4194304, -- (ESC)  
	---      SocialClub = 8388608, -- (RETURN)  
	---      Spectate = 16777216, -- (SPACE)  
	---      OkEsc = 33554432, -- (ESC)  
	---      CancelTransfer = 67108864, -- (ESC)  
	---      LoadingSpinner = 134217728,  
	---      NoReturnToGTA = 268435456, -- (ESC)  
	---      CancelEsc = 536870912, -- (ESC)  
	---}  
	---  
	---Alt = {  
	---      Empty = 0,  
	---      No = 1, -- (SPACE)  
	---      Host = 2, -- (ESC)  
	---      SearchForJob = 4, -- (RETURN)  
	---      ReturnKey = 8, -- (TURN)  
	---      Freemode = 16, -- (ESC)  
	---}  
	---  
	---Example: https://i.imgur.com/TvmNF4k.png  
	SET_WARNING_MESSAGE_WITH_HEADER_AND_SUBSTRING_FLAGS_EXTENDED = function(labelTitle, labelMessage, p2, p3, labelMessage2, p5, p6, p7, p8, p9, background, errorCode) invoker.call(0x15803FEC3B9A872B, labelTitle, labelMessage, p2, p3, labelMessage2, p5, p6, p7, p8, p9, background, errorCode) end,
	---Has to do with the confirmation overlay (E.g. confirm exit)  
	GET_WARNING_SCREEN_MESSAGE_HASH = function() return invoker.call(0x81DF9ABA6C83DFF9).int end,
	---Some sort of list displayed in a warning message. Yet unknown how to prevent repeating.  
	---Param names copied from the corresponding scaleform function "SET_LIST_ROW".  
	---Example: https://i.imgur.com/arKvOYx.png  
	SET_WARNING_MESSAGE_OPTION_ITEMS = function(index, name, cash, rp, lvl, colour) return invoker.call(0x0C5A80A9E096D529, index, name, cash, rp, lvl, colour).bool end,
	---  
	SET_WARNING_MESSAGE_OPTION_HIGHLIGHT = function(p0) return invoker.call(0xDAF87174BE7454FF, p0).bool end,
	---  
	REMOVE_WARNING_MESSAGE_OPTION_ITEMS = function() invoker.call(0x6EF54AB721DC6242) end,
	---  
	IS_WARNING_MESSAGE_ACTIVE = function() return invoker.call(0xE18B138FABC53103).bool end,
	---  
	CLEAR_DYNAMIC_PAUSE_MENU_ERROR_MESSAGE = function() invoker.call(0x7792424AA0EAC32E) end,
	---If toggle is true, the map is shown in full screen  
	---If toggle is false, the map is shown in normal mode  
	CUSTOM_MINIMAP_SET_ACTIVE = function(toggle) invoker.call(0x5354C5BA2EA868A4, toggle) end,
	---Sets the sprite of the next BLIP_GALLERY blip, values used in the native scripts: 143 (ObjectiveBlue), 144 (ObjectiveGreen), 145 (ObjectiveRed), 146 (ObjectiveYellow).  
	CUSTOM_MINIMAP_SET_BLIP_OBJECT = function(spriteId) invoker.call(0x1EAE6DD17B7A5EFA, spriteId) end,
	---Add a BLIP_GALLERY at the specific coordinate. Used in fm_maintain_transition_players to display race track points.  
	CUSTOM_MINIMAP_CREATE_BLIP = function(x, y, z) return invoker.call(0x551DF99658DB6EE8, x, y, z).int end,
	---  
	CUSTOM_MINIMAP_CLEAR_BLIPS = function() invoker.call(0x2708FC083123F9FF) end,
	---Doesn't actually return anything.  
	FORCE_SONAR_BLIPS_THIS_FRAME = function() return invoker.call(0x1121BFA1A1A522A8).bool end,
	---  
	GET_NORTH_BLID_INDEX = function() return invoker.call(0x3F0CF9CB7E589B88).int end,
	---Toggles whether or not name labels are shown on the expanded minimap next to player blips, like in GTA:O.  
	---Doesn't need to be called every frame.  
	---Preview: https://i.imgur.com/DfqKWfJ.png  
	---  
	---Make sure to call SET_BLIP_CATEGORY with index 7 for this to work on the desired blip.  
	DISPLAY_PLAYER_NAME_TAGS_ON_BLIPS = function(toggle) invoker.call(0x82CEDC33687E1F50, toggle) end,
	---This native does absolutely nothing, just a nullsub  
	DRAW_FRONTEND_BACKGROUND_THIS_FRAME = function() invoker.call(0x211C4EF450086857) end,
	---  
	DRAW_HUD_OVER_FADE_THIS_FRAME = function() invoker.call(0xBF4F34A85CA2970C) end,
	---Does stuff like this:  
	---gyazo.com/7fcb78ea3520e3dbc5b2c0c0f3712617  
	---  
	---Example:  
	---int GetHash = GET_HASH_KEY("fe_menu_version_corona_lobby");  
	---ACTIVATE_FRONTEND_MENU(GetHash, 0, -1);  
	---  
	---BOOL p1 is a toggle to define the game in pause.  
	---int p2 is unknown but -1 always works, not sure why though.  
	---  
	---[30/03/2017] ins1de :  
	---  
	---the int p2 is actually a component variable. When the pause menu is visible, it opens the tab related to it.  
	---  
	---Example : Function.Call(Hash.ACTIVATE_FRONTEND_MENU,-1171018317, 0, 42);  
	---Result : Opens the "Online" tab without pausing the menu, with -1 it opens the map.Below is a list of all known Frontend Menu Hashes.  
	---- FE_MENU_VERSION_SP_PAUSE  
	---- FE_MENU_VERSION_MP_PAUSE  
	---- FE_MENU_VERSION_CREATOR_PAUSE  
	---- FE_MENU_VERSION_CUTSCENE_PAUSE  
	---- FE_MENU_VERSION_SAVEGAME  
	---- FE_MENU_VERSION_PRE_LOBBY  
	---- FE_MENU_VERSION_LOBBY  
	---- FE_MENU_VERSION_MP_CHARACTER_SELECT  
	---- FE_MENU_VERSION_MP_CHARACTER_CREATION  
	---- FE_MENU_VERSION_EMPTY  
	---- FE_MENU_VERSION_EMPTY_NO_BACKGROUND  
	---- FE_MENU_VERSION_TEXT_SELECTION  
	---- FE_MENU_VERSION_CORONA  
	---- FE_MENU_VERSION_CORONA_LOBBY  
	---- FE_MENU_VERSION_CORONA_JOINED_PLAYERS  
	---- FE_MENU_VERSION_CORONA_INVITE_PLAYERS  
	---- FE_MENU_VERSION_CORONA_INVITE_FRIENDS  
	---- FE_MENU_VERSION_CORONA_INVITE_CREWS  
	---- FE_MENU_VERSION_CORONA_INVITE_MATCHED_PLAYERS  
	---- FE_MENU_VERSION_CORONA_INVITE_LAST_JOB_PLAYERS  
	---- FE_MENU_VERSION_CORONA_RACE  
	---- FE_MENU_VERSION_CORONA_BETTING  
	---- FE_MENU_VERSION_JOINING_SCREEN  
	---- FE_MENU_VERSION_LANDING_MENU  
	---- FE_MENU_VERSION_LANDING_KEYMAPPING_MENU  
	ACTIVATE_FRONTEND_MENU = function(menuhash, togglePause, component) invoker.call(0xEF01D36B9C9D0C7B, menuhash, togglePause, component) end,
	---Before using this native click the native above and look at the decription.  
	---  
	---Example:  
	---int GetHash = Function.Call<int>(Hash.GET_HASH_KEY, "fe_menu_version_corona_lobby");  
	---Function.Call(Hash.ACTIVATE_FRONTEND_MENU, GetHash, 0, -1);  
	---Function.Call(Hash.RESTART_FRONTEND_MENU(GetHash, -1);  
	---  
	---This native refreshes the frontend menu.  
	---  
	---p1 = Hash of Menu  
	---p2 = Unknown but always works with -1.  
	RESTART_FRONTEND_MENU = function(menuHash, p1) invoker.call(0x10706DC6AD2D49C0, menuHash, p1) end,
	---if (HUD::GET_CURRENT_FRONTEND_MENU_VERSION() == joaat("fe_menu_version_empty_no_background"))  
	GET_CURRENT_FRONTEND_MENU_VERSION = function() return invoker.call(0x2309595AD6145265).int end,
	---  
	SET_PAUSE_MENU_ACTIVE = function(toggle) invoker.call(0xDF47FC56C71569CF, toggle) end,
	---  
	DISABLE_FRONTEND_THIS_FRAME = function() invoker.call(0x6D3465A73092F0E6) end,
	---  
	SUPPRESS_FRONTEND_RENDERING_THIS_FRAME = function() invoker.call(0xBA751764F0821256) end,
	---Allows opening the pause menu this frame, when the player is dead.  
	ALLOW_PAUSE_WHEN_NOT_IN_STATE_OF_PLAY_THIS_FRAME = function() invoker.call(0xCC3FDDED67BCFC63) end,
	---  
	SET_FRONTEND_ACTIVE = function(active) invoker.call(0x745711A75AB09277, active) end,
	---  
	IS_PAUSE_MENU_ACTIVE = function() return invoker.call(0xB0034A223497FFCB).bool end,
	---  
	IS_STORE_PENDING_NETWORK_SHUTDOWN_TO_OPEN = function() return invoker.call(0x2F057596F2BD0061).bool end,
	---Returns:  
	---  
	---0  
	---5  
	---10  
	---15  
	---20  
	---25  
	---30  
	---35  
	---  
	GET_PAUSE_MENU_STATE = function() return invoker.call(0x272ACD84970869C5).int end,
	---  
	GET_PAUSE_MENU_POSITION = function() return invoker.call(0x5BFF36D6ED83E0AE).scr_vec3 end,
	---  
	IS_PAUSE_MENU_RESTARTING = function() return invoker.call(0x1C491717107431C7).bool end,
	---Not present in retail version of the game, actual definiton seems to be  
	---_LOG_DEBUG_INFO(const char* category, const char* debugText);  
	FORCE_SCRIPTED_GFX_WHEN_FRONTEND_ACTIVE = function(p0) invoker.call(0x2162C446DFDF38FD, p0) end,
	---  
	PAUSE_MENUCEPTION_GO_DEEPER = function(page) invoker.call(0x77F16B447824DA6C, page) end,
	---  
	PAUSE_MENUCEPTION_THE_KICK = function() invoker.call(0xCDCA26E80FAECB8F) end,
	---  
	PAUSE_TOGGLE_FULLSCREEN_MAP = function(p0) invoker.call(0x2DE6C5E2E996F178, p0) end,
	---Activates the specified frontend menu context.  
	---pausemenu.xml defines some specific menu options using 'context'. Context is basically a 'condition'.   
	---The `*ALL*` part of the context means that whatever is being defined, will be active when any or all of those conditions after `*ALL*` are met.  
	---The `*NONE*` part of the context section means that whatever is being defined, will NOT be active if any or all of the conditions after `*NONE*` are met.  
	---This basically allows you to hide certain menu sections, or things like instructional buttons.  
	PAUSE_MENU_ACTIVATE_CONTEXT = function(contextHash) invoker.call(0xDD564BDD0472C936, contextHash) end,
	---  
	PAUSE_MENU_DEACTIVATE_CONTEXT = function(contextHash) invoker.call(0x444D8CF241EC25C5, contextHash) end,
	---  
	PAUSE_MENU_IS_CONTEXT_ACTIVE = function(contextHash) return invoker.call(0x84698AB38D0C6636, contextHash).bool end,
	---  
	PAUSE_MENU_IS_CONTEXT_MENU_ACTIVE = function() return invoker.call(0x2A25ADC48F87841F).bool end,
	---  
	PAUSE_MENU_GET_HAIR_COLOUR_INDEX = function() return invoker.call(0xDE03620F8703A9DF).int end,
	---  
	PAUSE_MENU_GET_MOUSE_HOVER_INDEX = function() return invoker.call(0x359AF31A4B52F5ED).int end,
	---  
	PAUSE_MENU_GET_MOUSE_HOVER_UNIQUE_ID = function() return invoker.call(0x13C4B962653A5280).int end,
	---  
	PAUSE_MENU_GET_MOUSE_CLICK_EVENT = function(p0, p1, p2) return invoker.call(0xC8E1071177A23BE5, p0, p1, p2).bool end,
	---  
	PAUSE_MENU_REDRAW_INSTRUCTIONAL_BUTTONS = function(p0) invoker.call(0x4895BDEA16E7C080, p0) end,
	---  
	PAUSE_MENU_SET_BUSY_SPINNER = function(p0, position, spinnerIndex) invoker.call(0xC78E239AC5B2DDB9, p0, position, spinnerIndex) end,
	---  
	PAUSE_MENU_SET_WARN_ON_TAB_CHANGE = function(p0) invoker.call(0xF06EBB91A81E09E3, p0) end,
	---  
	PAUSE_MENU_SET_CLOUD_BUSY_SPINNER = function(TextLabel, bNoMenu, bBlackBackground) invoker.call(0x640B4FB20A104099, TextLabel, bNoMenu, bBlackBackground) end,
	---  
	PAUSE_MENU_CLEAR_CLOUD_BUSY_SPINNER = function() invoker.call(0x4947F58BB3AB76D2) end,
	---  
	IS_FRONTEND_READY_FOR_CONTROL = function() return invoker.call(0x3BAB9A4E4F2FF5C7).bool end,
	---Disables frontend (works in custom frontends, not sure about regular pause menu) navigation keys on keyboard. Not sure about controller. Does not disable mouse controls. No need to call this every tick.  
	---  
	---To enable the keys again, use `0x14621BB1DF14E2B2`.  
	TAKE_CONTROL_OF_FRONTEND = function() invoker.call(0xEC9264727EEC0F28) end,
	---Enables frontend (works in custom frontends, not sure about regular pause menu) navigation keys on keyboard if they were disabled using the native below.  
	---To disable the keys, use `0xEC9264727EEC0F28`  
	RELEASE_CONTROL_OF_FRONTEND = function() invoker.call(0x14621BB1DF14E2B2) end,
	---  
	CODE_WANTS_SCRIPT_TO_TAKE_CONTROL = function() return invoker.call(0x66E7CB63C97B7D20).bool end,
	---  
	GET_SCREEN_CODE_WANTS_SCRIPT_TO_CONTROL = function() return invoker.call(0x593FEAE1F73392D4).int end,
	---  
	IS_NAVIGATING_MENU_CONTENT = function() return invoker.call(0x4E3CD0EF8A489541).bool end,
	---  
	HAS_MENU_TRIGGER_EVENT_OCCURRED = function() return invoker.call(0xF284AC67940C6812).bool end,
	---  
	HAS_MENU_LAYOUT_CHANGED_EVENT_OCCURRED = function() return invoker.call(0x2E22FEFA0100275E).bool end,
	---  
	SET_SAVEGAME_LIST_UNIQUE_ID = function(p0) invoker.call(0x0CF54F20DE43879C, p0) end,
	---  
	GET_MENU_TRIGGER_EVENT_DETAILS = function(lastItemMenuId, selectedItemUniqueId) invoker.call(0x36C1451A88A09630, lastItemMenuId, selectedItemUniqueId) end,
	---lastItemMenuId: this is the menuID of the last selected item minus 1000 (lastItem.menuID - 1000)  
	---selectedItemMenuId: same as lastItemMenuId except for the currently selected menu item  
	---selectedItemUniqueId: this is uniqueID of the currently selected menu item  
	---  
	---when the pausemenu is closed:  
	---lastItemMenuId = -1  
	---selectedItemMenuId = -1  
	---selectedItemUniqueId = 0  
	---  
	---when the header gains focus:  
	---lastItemMenuId updates as normal or 0 if the pausemenu was just opened  
	---selectedItemMenuId becomes a unique id for the pausemenu page that focus was taken from (?) or 0 if the pausemenu was just opened  
	---selectedItemUniqueId = -1  
	---  
	---when focus is moved from the header to a pausemenu page:  
	---lastItemMenuId becomes a unique id for the pausemenu page that focus was moved to (?)  
	---selectedItemMenuId = -1  
	---selectedItemUniqueId updates as normal  
	GET_MENU_LAYOUT_CHANGED_EVENT_DETAILS = function(lastItemMenuId, selectedItemMenuId, selectedItemUniqueId) invoker.call(0x7E17BE53E1AAABAF, lastItemMenuId, selectedItemMenuId, selectedItemUniqueId) end,
	---  
	GET_PM_PLAYER_CREW_COLOR = function(r, g, b) return invoker.call(0xA238192F33110615, r, g, b).bool end,
	---  
	GET_MENU_PED_INT_STAT = function(p0, p1) return invoker.call(0xEF4CED81CEBEDC6D, p0, p1).bool end,
	---  
	GET_CHARACTER_MENU_PED_INT_STAT = function(p0, p1, p2) return invoker.call(0xCA6B2F7CE32AB653, p0, p1, p2).bool end,
	---  
	GET_MENU_PED_MASKED_INT_STAT = function(statHash, outValue, mask, p3) return invoker.call(0x90A6526CF0381030, statHash, outValue, mask, p3).bool end,
	---  
	GET_CHARACTER_MENU_PED_MASKED_INT_STAT = function(statHash, outValue, p2, mask, p4) return invoker.call(0x24A49BEAF468DC90, statHash, outValue, p2, mask, p4).bool end,
	---  
	GET_MENU_PED_FLOAT_STAT = function(statHash, outValue) return invoker.call(0x5FBD7095FE7AE57F, statHash, outValue).bool end,
	---  
	GET_CHARACTER_MENU_PED_FLOAT_STAT = function(statHash, outValue, p2) return invoker.call(0x8F08017F9D7C47BD, statHash, outValue, p2).bool end,
	---p0 was always 0xAE2602A3.  
	GET_MENU_PED_BOOL_STAT = function(statHash, outValue) return invoker.call(0x052991E59076E4E4, statHash, outValue).bool end,
	---  
	CLEAR_PED_IN_PAUSE_MENU = function() invoker.call(0x5E62BE5DC58E9E06) end,
	---p1 is either 1 or 2 in the PC scripts.  
	GIVE_PED_TO_PAUSE_MENU = function(ped, p1) invoker.call(0xAC0BFBDC3BE00E14, ped, p1) end,
	---Toggles the light state for the pause menu ped in frontend menus.  
	---  
	---This is used by R* in combination with `SET_PAUSE_MENU_PED_SLEEP_STATE` to toggle the "offline" or "online" state in the "friends" tab of the pause menu in GTA Online.  
	---  
	---  
	---Example:  
	---Lights On: https://vespura.com/hi/i/2019-04-01_16-09_540ee_1015.png  
	---Lights Off: https://vespura.com/hi/i/2019-04-01_16-10_8b5e7_1016.png  
	SET_PAUSE_MENU_PED_LIGHTING = function(state) invoker.call(0x3CA6050692BC61B0, state) end,
	---Toggles the pause menu ped sleep state for frontend menus.  
	---  
	---Example: https://vespura.com/hi/i/2019-04-01_15-51_8ed38_1014.gif  
	---  
	---`state` 0 will make the ped slowly fall asleep, 1 will slowly wake the ped up.  
	SET_PAUSE_MENU_PED_SLEEP_STATE = function(state) invoker.call(0xECF128344E9FF9F1, state) end,
	---  
	OPEN_ONLINE_POLICIES_MENU = function() invoker.call(0x805D7CBB36FD6C4C) end,
	---  
	ARE_ONLINE_POLICIES_UP_TO_DATE = function() return invoker.call(0xF13FE2A80C05C561).bool end,
	---Returns the same as IS_SOCIAL_CLUB_ACTIVE  
	IS_ONLINE_POLICIES_MENU_ACTIVE = function() return invoker.call(0x6F72CD94F7B5B68C).bool end,
	---Uses the `SOCIAL_CLUB2` scaleform.  
	---menu: GALLERY, MISSIONS, CREWS, MIGRATE, PLAYLISTS, JOBS  
	OPEN_SOCIAL_CLUB_MENU = function(menu) invoker.call(0x75D3691713C3B05A, menu) end,
	---  
	CLOSE_SOCIAL_CLUB_MENU = function() invoker.call(0xD2B32BE3FC1626C6) end,
	---HUD::SET_SOCIAL_CLUB_TOUR("Gallery");  
	---HUD::SET_SOCIAL_CLUB_TOUR("Missions");  
	---HUD::SET_SOCIAL_CLUB_TOUR("General");  
	---HUD::SET_SOCIAL_CLUB_TOUR("Playlists");  
	SET_SOCIAL_CLUB_TOUR = function(name) invoker.call(0x9E778248D6685FE0, name) end,
	---  
	IS_SOCIAL_CLUB_ACTIVE = function() return invoker.call(0xC406BE343FC4B9AF).bool end,
	---  
	SET_TEXT_INPUT_BOX_ENABLED = function(p0) invoker.call(0x1185A8087587322C, p0) end,
	---  
	FORCE_CLOSE_TEXT_INPUT_BOX = function() invoker.call(0x8817605C2BA76200) end,
	---  
	SET_ALLOW_COMMA_ON_TEXT_INPUT = function(p0) invoker.call(0x577599CCED639CA2, p0) end,
	---  
	OVERRIDE_MP_TEXT_CHAT_TEAM_STRING = function(gxtEntryHash) invoker.call(0x6A1738B4323FE2D9, gxtEntryHash) end,
	---Returns whether or not the text chat (MULTIPLAYER_CHAT Scaleform component) is active.  
	IS_MP_TEXT_CHAT_TYPING = function() return invoker.call(0xB118AF58B5F332A1).bool end,
	---  
	CLOSE_MP_TEXT_CHAT = function() invoker.call(0x1AC8F4AD40E22127) end,
	---  
	MP_TEXT_CHAT_IS_TEAM_JOB = function(p0) invoker.call(0x7C226D5346D4D10A, p0) end,
	---  
	OVERRIDE_MP_TEXT_CHAT_COLOR = function(p0, hudColor) invoker.call(0xF47E567B3630DD12, p0, hudColor) end,
	---Hides the chat history, closes the input box and makes it unable to be opened unless called again with FALSE.  
	MP_TEXT_CHAT_DISABLE = function(toggle) invoker.call(0x1DB21A44B09E8BA3, toggle) end,
	---  
	FLAG_PLAYER_CONTEXT_IN_TOURNAMENT = function(toggle) invoker.call(0xCEF214315D276FD1, toggle) end,
	---This native turns on the AI blip on the specified ped. It also disappears automatically when the ped is too far or if the ped is dead. You don't need to control it with other natives.  
	---  
	---See gtaforums.com/topic/884370-native-research-ai-blips for further information.  
	SET_PED_HAS_AI_BLIP = function(ped, hasCone) invoker.call(0xD30C50DF888D58B5, ped, hasCone) end,
	---color: see SET_BLIP_COLOUR  
	SET_PED_HAS_AI_BLIP_WITH_COLOUR = function(ped, hasCone, color) invoker.call(0xB13DCB4C6FAAD238, ped, hasCone, color) end,
	---  
	DOES_PED_HAVE_AI_BLIP = function(ped) return invoker.call(0x15B8ECF844EE67ED, ped).bool end,
	---  
	SET_PED_AI_BLIP_GANG_ID = function(ped, gangId) invoker.call(0xE52B8E7F85D39A08, ped, gangId) end,
	---  
	SET_PED_AI_BLIP_HAS_CONE = function(ped, toggle) invoker.call(0x3EED80DFF7325CAA, ped, toggle) end,
	---  
	SET_PED_AI_BLIP_FORCED_ON = function(ped, toggle) invoker.call(0x0C4BBF625CA98C4E, ped, toggle) end,
	---  
	SET_PED_AI_BLIP_NOTICE_RANGE = function(ped, range) invoker.call(0x97C65887D4B37FA9, ped, range) end,
	---  
	SET_PED_AI_BLIP_SPRITE = function(ped, spriteId) invoker.call(0xFCFACD0DB9D7A57D, ped, spriteId) end,
	---  
	GET_AI_PED_PED_BLIP_INDEX = function(ped) return invoker.call(0x7CD934010E115C2C, ped).int end,
	---Returns the current AI BLIP for the specified ped  
	GET_AI_PED_VEHICLE_BLIP_INDEX = function(ped) return invoker.call(0x56176892826A4FE8, ped).int end,
	---  
	HAS_DIRECTOR_MODE_BEEN_LAUNCHED_BY_CODE = function() return invoker.call(0xA277800A9EAE340E).bool end,
	---  
	SET_DIRECTOR_MODE_LAUNCHED_BY_SCRIPT = function() invoker.call(0x2632482FD6B9AB87) end,
	---If toggle is true, hides special ability bar / character name in the pause menu  
	---If toggle is false, shows special ability bar / character name in the pause menu  
	SET_PLAYER_IS_IN_DIRECTOR_MODE = function(toggle) invoker.call(0x808519373FD336A3, toggle) end,
	---  
	SET_DIRECTOR_MODE_AVAILABLE = function(toggle) invoker.call(0x04655F9D075D0AE5, toggle) end,
	---  
	HIDE_HUDMARKERS_THIS_FRAME = function() invoker.call(0x243296A510B562B6) end,
	---Launches the Initial Interactive Screen  
	SET_SHOULD_LAUNCH_IIS = function() invoker.call(0x244A22A2DA85D8C8) end,
}
INTERIOR={
	GET_INTERIOR_HEADING = function(interior) return invoker.call(0xF49B58631D9E22D9, interior).float end,
	---  
	GET_INTERIOR_LOCATION_AND_NAMEHASH = function(interior, position, nameHash) invoker.call(0x252BDC06B73FA6EA, interior, position, nameHash) end,
	---Returns the group ID of the specified interior.  
	---0 = default  
	---1 = subway station, subway tracks, sewers  
	---3 = train tunnel under mirror park  
	---5 = tunnel near del perro  
	---6 = train tunnel near chilliad  
	---7 = train tunnel near josiah  
	---8 = train tunnel in sandy shores  
	---9 = braddock tunnel (near chilliad)  
	---12 = tunnel under fort zancudo  
	---14 = train tunnel under cypress flats  
	---18 = rockford plaza parking garage  
	---19 = arcadius parking garage  
	---20 = union depository parking garage  
	---21 = fib parking garage  
	GET_INTERIOR_GROUP_ID = function(interior) return invoker.call(0xE4A84ABF135EF91A, interior).int end,
	---  
	GET_OFFSET_FROM_INTERIOR_IN_WORLD_COORDS = function(interior, x, y, z) return invoker.call(0x9E3B3E6D66F6E22F, interior, x, y, z).scr_vec3 end,
	---  
	IS_INTERIOR_SCENE = function() return invoker.call(0xBC72B5D7A1CBD54D).bool end,
	---  
	IS_VALID_INTERIOR = function(interior) return invoker.call(0x26B0E73D7EAAF4D3, interior).bool end,
	---  
	CLEAR_ROOM_FOR_ENTITY = function(entity) invoker.call(0xB365FC0C4E27FFA7, entity) end,
	---  
	FORCE_ROOM_FOR_ENTITY = function(entity, interior, roomHashKey) invoker.call(0x52923C4710DD9907, entity, interior, roomHashKey) end,
	---Gets the room hash key from the room that the specified entity is in. Each room in every interior has a unique key. Returns 0 if the entity is outside.  
	GET_ROOM_KEY_FROM_ENTITY = function(entity) return invoker.call(0x47C2A06D4F5F424B, entity).int end,
	---Seems to do the exact same as INTERIOR::GET_ROOM_KEY_FROM_ENTITY  
	GET_KEY_FOR_ENTITY_IN_ROOM = function(entity) return invoker.call(0x399685DB942336BC, entity).int end,
	---Returns the handle of the interior that the entity is in. Returns 0 if outside.  
	GET_INTERIOR_FROM_ENTITY = function(entity) return invoker.call(0x2107BA504071A6BB, entity).int end,
	---  
	RETAIN_ENTITY_IN_INTERIOR = function(entity, interior) invoker.call(0x82EBB79E258FA2B7, entity, interior) end,
	---Immediately removes entity from an interior. Like sets entity to `limbo` room.  
	CLEAR_INTERIOR_STATE_OF_ENTITY = function(entity) invoker.call(0x85D5422B2039A70D, entity) end,
	---  
	FORCE_ACTIVATING_TRACKING_ON_ENTITY = function(p0, p1) invoker.call(0x38C1CB1CB119A016, p0, p1) end,
	---  
	FORCE_ROOM_FOR_GAME_VIEWPORT = function(interiorID, roomHashKey) invoker.call(0x920D853F3E17F1DA, interiorID, roomHashKey) end,
	---Example of use (carmod_shop)  
	---INTERIOR::SET_ROOM_FOR_GAME_VIEWPORT_BY_NAME("V_CarModRoom");  
	SET_ROOM_FOR_GAME_VIEWPORT_BY_NAME = function(roomName) invoker.call(0xAF348AFCB575A441, roomName) end,
	---Usage: INTERIOR::SET_ROOM_FOR_GAME_VIEWPORT_BY_KEY(INTERIOR::GET_KEY_FOR_ENTITY_IN_ROOM(PLAYER::PLAYER_PED_ID()));  
	SET_ROOM_FOR_GAME_VIEWPORT_BY_KEY = function(roomHashKey) invoker.call(0x405DC2AEF6AF95B9, roomHashKey) end,
	---  
	GET_ROOM_KEY_FOR_GAME_VIEWPORT = function() return invoker.call(0xA6575914D2A0B450).int end,
	---  
	CLEAR_ROOM_FOR_GAME_VIEWPORT = function() invoker.call(0x23B59D8912F94246) end,
	---Returns the current interior id from gameplay camera  
	GET_INTERIOR_FROM_PRIMARY_VIEW = function() return invoker.call(0xE7D267EC6CA966C3).int end,
	---Returns interior ID from specified coordinates. If coordinates are outside, then it returns 0.  
	---  
	---Example for VB.NET  
	---Dim interiorID As Integer = Native.Function.Call(Of Integer)(Hash.GET_INTERIOR_AT_COORDS, X, Y, Z)  
	GET_INTERIOR_AT_COORDS = function(x, y, z) return invoker.call(0xB0F7F8663821D9C3, x, y, z).int end,
	---  
	ADD_PICKUP_TO_INTERIOR_ROOM_BY_NAME = function(pickup, roomName) invoker.call(0x3F6167F351168730, pickup, roomName) end,
	---  
	PIN_INTERIOR_IN_MEMORY = function(interior) invoker.call(0x2CA429C029CCF247, interior) end,
	---Does something similar to INTERIOR::DISABLE_INTERIOR.  
	---  
	---You don't fall through the floor but everything is invisible inside and looks the same as when INTERIOR::DISABLE_INTERIOR is used. Peds behaves normally inside.   
	UNPIN_INTERIOR = function(interior) invoker.call(0x261CCE7EED010641, interior) end,
	---  
	IS_INTERIOR_READY = function(interior) return invoker.call(0x6726BDCCC1932F0E, interior).bool end,
	---Only used once in the entire game scripts.  
	---Does not actually return anything.  
	SET_INTERIOR_IN_USE = function(interior) return invoker.call(0x4C2330E61D3DEB56, interior).bool end,
	---Returns the interior ID representing the requested interior at that location (if found?). The supplied interior string is not the same as the one used to load the interior.  
	---  
	---Use: INTERIOR::UNPIN_INTERIOR(INTERIOR::GET_INTERIOR_AT_COORDS_WITH_TYPE(x, y, z, interior))  
	---  
	---Interior types include: "V_Michael", "V_Franklins", "V_Franklinshouse", etc.. you can find them in the scripts.  
	---  
	---Not a very useful native as you could just use GET_INTERIOR_AT_COORDS instead and get the same result, without even having to specify the interior type.  
	GET_INTERIOR_AT_COORDS_WITH_TYPE = function(x, y, z, interiorType) return invoker.call(0x05B7A89BD78797FC, x, y, z, interiorType).int end,
	---Hashed version of GET_INTERIOR_AT_COORDS_WITH_TYPE  
	GET_INTERIOR_AT_COORDS_WITH_TYPEHASH = function(x, y, z, typeHash) return invoker.call(0xF0F77ADB9F67E79D, x, y, z, typeHash).int end,
	---  
	ACTIVATE_INTERIOR_GROUPS_USING_CAMERA = function() invoker.call(0x483ACA1176CA93F1) end,
	---Returns true if the collision at the specified coords is marked as being outside (false if there's an interior)  
	IS_COLLISION_MARKED_OUTSIDE = function(x, y, z) return invoker.call(0xEEA5AC2EDA7C33E8, x, y, z).bool end,
	---  
	GET_INTERIOR_FROM_COLLISION = function(x, y, z) return invoker.call(0xEC4CF9FCB29A4424, x, y, z).int end,
	---  
	ENABLE_STADIUM_PROBES_THIS_FRAME = function(toggle) invoker.call(0x7ECDF98587E92DEC, toggle) end,
	---More info: http://gtaforums.com/topic/836367-adding-props-to-interiors/  
	---  
	---Full list of IPLs and interior entity sets by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/ipls.json  
	ACTIVATE_INTERIOR_ENTITY_SET = function(interior, entitySetName) invoker.call(0x55E86AF2712B36A1, interior, entitySetName) end,
	---Full list of IPLs and interior entity sets by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/ipls.json  
	DEACTIVATE_INTERIOR_ENTITY_SET = function(interior, entitySetName) invoker.call(0x420BD37289EEE162, interior, entitySetName) end,
	---Full list of IPLs and interior entity sets by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/ipls.json  
	IS_INTERIOR_ENTITY_SET_ACTIVE = function(interior, entitySetName) return invoker.call(0x35F7DD45E8C0A16D, interior, entitySetName).bool end,
	---Full list of IPLs and interior entity sets by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/ipls.json  
	SET_INTERIOR_ENTITY_SET_TINT_INDEX = function(interior, entitySetName, color) invoker.call(0xC1F1920BAF281317, interior, entitySetName, color) end,
	---  
	REFRESH_INTERIOR = function(interior) invoker.call(0x41F37C3427C75AE0, interior) end,
	---This is the native that is used to hide the exterior of GTA Online apartment buildings when you are inside an apartment.  
	---  
	---More info: http://gtaforums.com/topic/836301-hiding-gta-online-apartment-exteriors/  
	ENABLE_EXTERIOR_CULL_MODEL_THIS_FRAME = function(mapObjectHash) invoker.call(0xA97F257D0151A6AB, mapObjectHash) end,
	---  
	ENABLE_SHADOW_CULL_MODEL_THIS_FRAME = function(mapObjectHash) invoker.call(0x50C375537449F369, mapObjectHash) end,
	---Example:   
	---This removes the interior from the strip club and when trying to walk inside the player just falls:  
	---  
	---INTERIOR::DISABLE_INTERIOR(118018, true);  
	DISABLE_INTERIOR = function(interior, toggle) invoker.call(0x6170941419D7D8EC, interior, toggle) end,
	---  
	IS_INTERIOR_DISABLED = function(interior) return invoker.call(0xBC5115A5A939DD15, interior).bool end,
	---Does something similar to INTERIOR::DISABLE_INTERIOR  
	CAP_INTERIOR = function(interior, toggle) invoker.call(0xD9175F941610DB54, interior, toggle) end,
	---  
	IS_INTERIOR_CAPPED = function(interior) return invoker.call(0x92BAC8ACF88CEC26, interior).bool end,
	---  
	DISABLE_METRO_SYSTEM = function(toggle) invoker.call(0x9E6542F0CE8E70A3, toggle) end,
	---Jenkins hash _might_ be 0xFC227584.  
	SET_IS_EXTERIOR_ONLY = function(entity, toggle) invoker.call(0x7241CCB7D020DB69, entity, toggle) end,
}
ITEMSET={
	CREATE_ITEMSET = function(p0) return invoker.call(0x35AD299F50D91B24, p0).int end,
	---  
	DESTROY_ITEMSET = function(itemset) invoker.call(0xDE18220B1C183EDA, itemset) end,
	---  
	IS_ITEMSET_VALID = function(itemset) return invoker.call(0xB1B1EA596344DFAB, itemset).bool end,
	---  
	ADD_TO_ITEMSET = function(item, itemset) return invoker.call(0xE3945201F14637DD, item, itemset).bool end,
	---  
	REMOVE_FROM_ITEMSET = function(item, itemset) invoker.call(0x25E68244B0177686, item, itemset) end,
	---  
	GET_ITEMSET_SIZE = function(itemset) return invoker.call(0xD9127E83ABF7C631, itemset).int end,
	---  
	GET_INDEXED_ITEM_IN_ITEMSET = function(index, itemset) return invoker.call(0x7A197E2521EE2BAB, index, itemset).int end,
	---  
	IS_IN_ITEMSET = function(item, itemset) return invoker.call(0x2D0FC594D1E9C107, item, itemset).bool end,
	---  
	CLEAN_ITEMSET = function(itemset) invoker.call(0x41BC0D722FC04221, itemset) end,
}
LOADINGSCREEN={ 
	IS_LANDING_PAGE_ACTIVE = function() return invoker.call(0xB37FC2FB7418367C).bool end,
	---  
	SET_SHOULD_LAUNCH_LANDING_PAGE = function(entrypointId) invoker.call(0xFD1B81BDD7FBCB41, entrypointId) end,
	---  
	SET_SHOULD_DISMISS_LANDING_PAGE = function() invoker.call(0x237D6F6D474FC93C) end,
	---  
	GET_LANDING_PAGE_SELECTED_CHARACTER_SLOT = function() return invoker.call(0x770CB76ED0895B5B).int end,
	---This function is hard-coded to always return 0.  
	LOBBY_AUTO_MULTIPLAYER_MENU = function() return invoker.call(0xF2CA003F167E21D2).bool end,
	---  
	LOBBY_AUTO_MULTIPLAYER_FREEMODE = function() return invoker.call(0xEF7D17BC6C85264C).bool end,
	---  
	LOBBY_SET_AUTO_MULTIPLAYER = function(toggle) invoker.call(0xB0C56BD3D808D863, toggle) end,
	---  
	LOBBY_AUTO_MULTIPLAYER_EVENT = function() return invoker.call(0x8AA464D4E0F6ACCD).bool end,
	---  
	LOBBY_SET_AUTO_MULTIPLAYER_EVENT = function(toggle) invoker.call(0xFC309E94546FCDB5, toggle) end,
	---  
	LOBBY_AUTO_MULTIPLAYER_RANDOM_JOB = function() return invoker.call(0xC6DC823253FBB366).bool end,
	---  
	LOBBY_SET_AUTO_MP_RANDOM_JOB = function(toggle) invoker.call(0xC7E7181C09F33B69, toggle) end,
	---  
	SHUTDOWN_SESSION_CLEARS_AUTO_MULTIPLAYER = function(toggle) invoker.call(0xFA1E0E893D915215, toggle) end,
}
LOCALIZATION={
	---Same return values as GET_CURRENT_LANGUAGE  
	LOCALIZATION_GET_SYSTEM_LANGUAGE = function() return invoker.call(0x497420E022796B3F).int end,
	---0 = american (en-US)  
	---1 = french (fr-FR)  
	---2 = german (de-DE)  
	---3 = italian (it-IT)  
	---4 = spanish (es-ES)  
	---5 = brazilian (pt-BR)  
	---6 = polish (pl-PL)  
	---7 = russian (ru-RU)  
	---8 = korean (ko-KR)  
	---9 = chinesetrad (zh-TW)  
	---10 = japanese (ja-JP)  
	---11 = mexican (es-MX)  
	---12 = chinesesimp (zh-CN)  
	GET_CURRENT_LANGUAGE = function() return invoker.call(0x2BDD44CC428A7EAE).int end,
	---Possible return values: 0, 1, 2  
	LOCALIZATION_GET_SYSTEM_DATE_TYPE = function() return invoker.call(0xA8AE43AEC1A61314).int end,
}
MISC={
	GET_ALLOCATED_STACK_SIZE = function() return invoker.call(0x8B3CA62B1EF19B62).int end,
	---  
	GET_NUMBER_OF_FREE_STACKS_OF_THIS_SIZE = function(stackSize) return invoker.call(0xFEAD16FC8F9DFC0F, stackSize).int end,
	---  
	SET_RANDOM_SEED = function(seed) invoker.call(0x444D98F98C11F3EC, seed) end,
	---Maximum value is 1.  
	---At a value of 0 the game will still run at a minimum time scale.  
	---  
	---Slow Motion 1: 0.6  
	---Slow Motion 2: 0.4  
	---Slow Motion 3: 0.2  
	SET_TIME_SCALE = function(timeScale) invoker.call(0x1D408577D440E81E, timeScale) end,
	---If true, the player can't save the game.   
	---  
	---  
	---If the parameter is true, sets the mission flag to true, if the parameter is false, the function does nothing at all.  
	---  
	---^ also, if the mission flag is already set, the function does nothing at all  
	SET_MISSION_FLAG = function(toggle) invoker.call(0xC4301E5121A0ED73, toggle) end,
	---  
	GET_MISSION_FLAG = function() return invoker.call(0xA33CDCCDA663159E).bool end,
	---If the parameter is true, sets the random event flag to true, if the parameter is false, the function does nothing at all.  
	---Does nothing if the mission flag is set.  
	SET_RANDOM_EVENT_FLAG = function(toggle) invoker.call(0x971927086CFD2158, toggle) end,
	---  
	GET_RANDOM_EVENT_FLAG = function() return invoker.call(0xD2D57F1D764117B1).bool end,
	---Returns pointer to an empty string.  
	GET_CONTENT_TO_LOAD = function() return invoker.call(0x24DA7D7667FD7B09).str end,
	---Does nothing (it's a nullsub). Seems to be PS4 specific.  
	ACTIVITY_FEED_CREATE = function(p0, p1) invoker.call(0x4DCDF92BF64236CD, p0, p1) end,
	---Does nothing (it's a nullsub). Seems to be PS4 specific.  
	ACTIVITY_FEED_ADD_SUBSTRING_TO_CAPTION = function(p0) invoker.call(0x31125FD509D9043F, p0) end,
	---Does nothing (it's a nullsub). Seems to be PS4 specific.  
	ACTIVITY_FEED_ADD_LITERAL_SUBSTRING_TO_CAPTION = function(p0) invoker.call(0xEBD3205A207939ED, p0) end,
	---Does nothing (it's a nullsub). Seems to be PS4 specific.  
	ACTIVITY_FEED_ADD_INT_TO_CAPTION = function(p0) invoker.call(0x97E7E2C04245115B, p0) end,
	---Does nothing (it's a nullsub). Seems to be PS4 specific.  
	ACTIVITY_FEED_LARGE_IMAGE_URL = function(p0) invoker.call(0x916CA67D26FD1E37, p0) end,
	---Does nothing (it's a nullsub). Seems to be PS4 specific.  
	ACTIVITY_FEED_ACTION_START_WITH_COMMAND_LINE = function(p0, p1) invoker.call(0xEB078CA2B5E82ADD, p0, p1) end,
	---Does nothing (it's a nullsub). Seems to be PS4 specific.  
	ACTIVITY_FEED_ACTION_START_WITH_COMMAND_LINE_ADD = function(p0) invoker.call(0x703CC7F60CBB2B57, p0) end,
	---Does nothing (it's a nullsub). Seems to be PS4 specific.  
	ACTIVITY_FEED_POST = function() invoker.call(0x8951EB9C6906D3C8) end,
	---Does nothing (it's a nullsub). Seems to be PS4 specific.  
	---  
	---Used only once in the scripts (ingamehud) with p0 = "AF_GAMEMODE"  
	ACTIVITY_FEED_ONLINE_PLAYED_WITH_POST = function(p0) invoker.call(0xBA4B8D83BDC75551, p0) end,
	---Hardcoded to return false.  
	HAS_RESUMED_FROM_SUSPEND = function() return invoker.call(0xE8B9C0EC9E183F35).bool end,
	---Sets GtaThread+0x14A  
	SET_SCRIPT_HIGH_PRIO = function(toggle) invoker.call(0x65D2EBB47E1CEC21, toggle) end,
	---Sets bit 3 in GtaThread+0x150  
	SET_THIS_IS_A_TRIGGER_SCRIPT = function(toggle) invoker.call(0x6F2135B6129620C1, toggle) end,
	---  
	INFORM_CODE_OF_CONTENT_ID_OF_CURRENT_UGC_MISSION = function(p0) invoker.call(0x8D74E26F54B4E5C3, p0) end,
	---  
	GET_BASE_ELEMENT_LOCATION_FROM_METADATA_BLOCK = function(p0, p1, p2, p3) return invoker.call(0xB335F761606DB47C, p0, p1, p2, p3).bool end,
	---Returns current weather name hash  
	GET_PREV_WEATHER_TYPE_HASH_NAME = function() return invoker.call(0x564B884A05EC45A3).int end,
	---Returns weather name hash  
	GET_NEXT_WEATHER_TYPE_HASH_NAME = function() return invoker.call(0x711327CD09C8F162).int end,
	---  
	IS_PREV_WEATHER_TYPE = function(weatherType) return invoker.call(0x44F28F86433B10A9, weatherType).bool end,
	---  
	IS_NEXT_WEATHER_TYPE = function(weatherType) return invoker.call(0x2FAA3A30BEC0F25D, weatherType).bool end,
	---The following weatherTypes are used in the scripts:  
	---"CLEAR"  
	---"EXTRASUNNY"  
	---"CLOUDS"  
	---"OVERCAST"  
	---"RAIN"  
	---"CLEARING"  
	---"THUNDER"  
	---"SMOG"  
	---"FOGGY"  
	---"XMAS"  
	---"SNOW"  
	---"SNOWLIGHT"  
	---"BLIZZARD"  
	---"HALLOWEEN"  
	---"NEUTRAL"  
	SET_WEATHER_TYPE_PERSIST = function(weatherType) invoker.call(0x704983DF373B198F, weatherType) end,
	---The following weatherTypes are used in the scripts:  
	---"CLEAR"  
	---"EXTRASUNNY"  
	---"CLOUDS"  
	---"OVERCAST"  
	---"RAIN"  
	---"CLEARING"  
	---"THUNDER"  
	---"SMOG"  
	---"FOGGY"  
	---"XMAS"  
	---"SNOW"  
	---"SNOWLIGHT"  
	---"BLIZZARD"  
	---"HALLOWEEN"  
	---"NEUTRAL"  
	SET_WEATHER_TYPE_NOW_PERSIST = function(weatherType) invoker.call(0xED712CA327900C8A, weatherType) end,
	---The following weatherTypes are used in the scripts:  
	---"CLEAR"  
	---"EXTRASUNNY"  
	---"CLOUDS"  
	---"OVERCAST"  
	---"RAIN"  
	---"CLEARING"  
	---"THUNDER"  
	---"SMOG"  
	---"FOGGY"  
	---"XMAS"  
	---"SNOW"  
	---"SNOWLIGHT"  
	---"BLIZZARD"  
	---"HALLOWEEN"  
	---"NEUTRAL"  
	SET_WEATHER_TYPE_NOW = function(weatherType) invoker.call(0x29B487C359E19889, weatherType) end,
	---  
	SET_WEATHER_TYPE_OVERTIME_PERSIST = function(weatherType, time) invoker.call(0xFB5045B7C42B75BF, weatherType, time) end,
	---  
	SET_RANDOM_WEATHER_TYPE = function() invoker.call(0x8B05F884CF7E8020) end,
	---  
	CLEAR_WEATHER_TYPE_PERSIST = function() invoker.call(0xCCC39339BEF76CF5) end,
	---  
	CLEAR_WEATHER_TYPE_NOW_PERSIST_NETWORK = function(milliseconds) invoker.call(0x0CF97F497FE7D048, milliseconds) end,
	---  
	GET_CURR_WEATHER_STATE = function(weatherType1, weatherType2, percentWeather2) invoker.call(0xF3BBE884A14BB413, weatherType1, weatherType2, percentWeather2) end,
	---Mixes two weather types. If percentWeather2 is set to 0.0f, then the weather will be entirely of weatherType1, if it is set to 1.0f it will be entirely of weatherType2. If it's set somewhere in between, there will be a mixture of weather behaviors. To test, try this in the RPH console, and change the float to different values between 0 and 1:  
	---  
	---execute "NativeFunction.Natives.x578C752848ECFA0C(Game.GetHashKey(""RAIN""), Game.GetHashKey(""SMOG""), 0.50f);  
	---  
	---Note that unlike most of the other weather natives, this native takes the hash of the weather name, not the plain string. These are the weather names and their hashes:  
	---  
	---CLEAR  0x36A83D84  
	---EXTRASUNNY  0x97AA0A79  
	---CLOUDS  0x30FDAF5C  
	---OVERCAST    0xBB898D2D  
	---RAIN    0x54A69840  
	---CLEARING    0x6DB1A50D  
	---THUNDER 0xB677829F  
	---SMOG    0x10DCF4B5  
	---FOGGY   0xAE737644  
	---XMAS    0xAAC9C895  
	---SNOWLIGHT   0x23FB812B  
	---BLIZZARD    0x27EA2814  
	---  
	---  
	---  
	---  
	---  
	---/* OLD INVALID INFO BELOW */  
	---Not tested. Based purely on disassembly. Instantly sets the weather to sourceWeather, then transitions to targetWeather over the specified transitionTime in seconds.  
	---  
	---If an invalid hash is specified for sourceWeather, the current weather type will be used.  
	---If an invalid hash is specified for targetWeather, the next weather type will be used.  
	---If an invalid hash is specified for both sourceWeather and targetWeather, the function just changes the transition time of the current transition.  
	SET_CURR_WEATHER_STATE = function(weatherType1, weatherType2, percentWeather2) invoker.call(0x578C752848ECFA0C, weatherType1, weatherType2, percentWeather2) end,
	---Appears to have an optional bool parameter that is unused in the scripts.  
	---  
	---If you pass true, something will be set to zero.  
	SET_OVERRIDE_WEATHER = function(weatherType) invoker.call(0xA43D5C6FE51ADBEF, weatherType) end,
	---Identical to SET_OVERRIDE_WEATHER but has an additional BOOL param that sets some weather var to 0 if true  
	SET_OVERRIDE_WEATHEREX = function(weatherType, p1) invoker.call(0x1178E104409FE58C, weatherType, p1) end,
	---  
	CLEAR_OVERRIDE_WEATHER = function() invoker.call(0x338D2E3477711050) end,
	---  
	WATER_OVERRIDE_SET_SHOREWAVEAMPLITUDE = function(amplitude) invoker.call(0xB8F87EAD7533B176, amplitude) end,
	---  
	WATER_OVERRIDE_SET_SHOREWAVEMINAMPLITUDE = function(minAmplitude) invoker.call(0xC3EAD29AB273ECE8, minAmplitude) end,
	---  
	WATER_OVERRIDE_SET_SHOREWAVEMAXAMPLITUDE = function(maxAmplitude) invoker.call(0xA7A1127490312C36, maxAmplitude) end,
	---  
	WATER_OVERRIDE_SET_OCEANNOISEMINAMPLITUDE = function(minAmplitude) invoker.call(0x31727907B2C43C55, minAmplitude) end,
	---  
	WATER_OVERRIDE_SET_OCEANWAVEAMPLITUDE = function(amplitude) invoker.call(0x405591EC8FD9096D, amplitude) end,
	---  
	WATER_OVERRIDE_SET_OCEANWAVEMINAMPLITUDE = function(minAmplitude) invoker.call(0xF751B16FB32ABC1D, minAmplitude) end,
	---  
	WATER_OVERRIDE_SET_OCEANWAVEMAXAMPLITUDE = function(maxAmplitude) invoker.call(0xB3E6360DDE733E82, maxAmplitude) end,
	---  
	WATER_OVERRIDE_SET_RIPPLEBUMPINESS = function(bumpiness) invoker.call(0x7C9C0B1EEB1F9072, bumpiness) end,
	---  
	WATER_OVERRIDE_SET_RIPPLEMINBUMPINESS = function(minBumpiness) invoker.call(0x6216B116083A7CB4, minBumpiness) end,
	---  
	WATER_OVERRIDE_SET_RIPPLEMAXBUMPINESS = function(maxBumpiness) invoker.call(0x9F5E6BB6B34540DA, maxBumpiness) end,
	---  
	WATER_OVERRIDE_SET_RIPPLEDISTURB = function(disturb) invoker.call(0xB9854DFDE0D833D6, disturb) end,
	---This seems to edit the water wave, intensity around your current location.  
	---  
	---0.0f = Normal  
	---1.0f = So Calm and Smooth, a boat will stay still.  
	---3.0f = Really Intense.  
	WATER_OVERRIDE_SET_STRENGTH = function(strength) invoker.call(0xC54A08C85AE4D410, strength) end,
	---  
	WATER_OVERRIDE_FADE_IN = function(p0) invoker.call(0xA8434F1DFF41D6E7, p0) end,
	---  
	WATER_OVERRIDE_FADE_OUT = function(p0) invoker.call(0xC3C221ADDDE31A11, p0) end,
	---Sets the the normalized wind speed value. The wind speed clamps always at 12.0, SET_WIND sets the wind in a percentage, 0.0 is 0 and 1.0 is 12.0. Setting this value to a negative number resumes the random wind speed changes provided by the game.  
	SET_WIND = function(speed) invoker.call(0xAC3A74E8384A9919, speed) end,
	---Using this native will set the absolute wind speed value. The wind speed clamps to a range of 0.0- 12.0. Setting this value to a negative number resumes the random wind speed changes provided by the game.  
	SET_WIND_SPEED = function(speed) invoker.call(0xEE09ECEDBABE47FC, speed) end,
	---  
	GET_WIND_SPEED = function() return invoker.call(0xA8CF1CC0AFCD3F12).float end,
	---The wind direction in radians  
	---180 degrees (PI), wind will blow from the south. Setting this value to a negative number resumes the random wind direction changes provided by the game.  
	SET_WIND_DIRECTION = function(direction) invoker.call(0xEB0F4468467B4528, direction) end,
	---  
	GET_WIND_DIRECTION = function() return invoker.call(0x1F400FEF721170DA).scr_vec3 end,
	---With an `intensity` higher than `0.5f`, only the creation of puddles gets faster, rain and rain sound won't increase after that.  
	---With an `intensity` of `0.0f` rain and rain sounds are disabled and there won't be any new puddles.  
	---To use the rain intensity of the current weather, call this native with `-1f` as `intensity`.  
	SET_RAIN = function(intensity) invoker.call(0x643E26EA6E024D92, intensity) end,
	---  
	GET_RAIN_LEVEL = function() return invoker.call(0x96695E368AD855F3).float end,
	---  
	SET_SNOW = function(level) invoker.call(0x7F06937B0CDCBC1A, level) end,
	---  
	GET_SNOW_LEVEL = function() return invoker.call(0xC5868A966E5BE3AE).float end,
	---creates single lightning+thunder at random position  
	FORCE_LIGHTNING_FLASH = function() invoker.call(0xF6062E089251C898) end,
	---  
	SET_CLOUD_SETTINGS_OVERRIDE = function(p0) invoker.call(0x02DEAAC8F8EA7FE7, p0) end,
	---  
	PRELOAD_CLOUD_HAT = function(name) invoker.call(0x11B56FBBF7224868, name) end,
	---The following cloudhats are useable:  
	---altostratus  
	---Cirrus  
	---cirrocumulus  
	---Clear 01  
	---Cloudy 01  
	---Contrails  
	---Horizon  
	---horizonband1  
	---horizonband2  
	---horizonband3  
	---horsey  
	---Nimbus  
	---Puffs  
	---RAIN  
	---Snowy 01  
	---Stormy 01  
	---stratoscumulus  
	---Stripey  
	---shower  
	---Wispy  
	---  
	LOAD_CLOUD_HAT = function(name, transitionTime) invoker.call(0xFC4842A34657BFCB, name, transitionTime) end,
	---  
	UNLOAD_CLOUD_HAT = function(name, p1) invoker.call(0xA74802FB8D0B7814, name, p1) end,
	---  
	UNLOAD_ALL_CLOUD_HATS = function() invoker.call(0x957E790EA1727B64) end,
	---  
	SET_CLOUDS_ALPHA = function(opacity) invoker.call(0xF36199225D6D8C86, opacity) end,
	---  
	GET_CLOUDS_ALPHA = function() return invoker.call(0x20AC25E781AE4A84).float end,
	---  
	GET_GAME_TIMER = function() return invoker.call(0x9CD27B0045628463).int end,
	---  
	GET_FRAME_TIME = function() return invoker.call(0x15C40837039FFAF7).float end,
	---  
	GET_SYSTEM_TIME_STEP = function() return invoker.call(0xE599A503B3837E1B).float end,
	---  
	GET_FRAME_COUNT = function() return invoker.call(0xFC8202EFC642E6F2).int end,
	---  
	GET_RANDOM_FLOAT_IN_RANGE = function(startRange, endRange) return invoker.call(0x313CE5879CEB6FCD, startRange, endRange).float end,
	---  
	GET_RANDOM_INT_IN_RANGE = function(startRange, endRange) return invoker.call(0xD53343AA4FB7DD28, startRange, endRange).int end,
	---  
	GET_RANDOM_MWC_INT_IN_RANGE = function(startRange, endRange) return invoker.call(0xF2D49816A804D134, startRange, endRange).int end,
	---Gets the ground elevation at the specified position. Note that if the specified position is below ground level, the function will output zero!  
	---  
	---x: Position on the X-axis to get ground elevation at.  
	---y: Position on the Y-axis to get ground elevation at.  
	---z: Position on the Z-axis to get ground elevation at.  
	---groundZ: The ground elevation at the specified position.  
	---ignoreWater: Nearly always 0, very rarely 1 in the scripts: https://gfycat.com/NiftyTatteredCricket  
	---  
	---Bear in mind this native can only calculate the elevation when the coordinates are within the client's render distance.  
	GET_GROUND_Z_FOR_3D_COORD = function(x, y, z, groundZ, ignoreWater, p5) return invoker.call(0xC906A7DAB05C8D2B, x, y, z, groundZ, ignoreWater, p5).bool end,
	---  
	GET_GROUND_Z_AND_NORMAL_FOR_3D_COORD = function(x, y, z, groundZ, normal) return invoker.call(0x8BDC7BFC57A81E76, x, y, z, groundZ, normal).bool end,
	---  
	GET_GROUND_Z_EXCLUDING_OBJECTS_FOR_3D_COORD = function(x, y, z, groundZ, p4, p5) return invoker.call(0x9E82F0F362881B29, x, y, z, groundZ, p4, p5).bool end,
	---  
	ASIN = function(p0) return invoker.call(0xC843060B5765DCE7, p0).float end,
	---  
	ACOS = function(p0) return invoker.call(0x1D08B970013C34B6, p0).float end,
	---  
	TAN = function(p0) return invoker.call(0x632106CC96E82E91, p0).float end,
	---  
	ATAN = function(p0) return invoker.call(0xA9D1795CD5043663, p0).float end,
	---  
	ATAN2 = function(p0, p1) return invoker.call(0x8927CBF9D22261A4, p0, p1).float end,
	---Returns the distance between two three-dimensional points, optionally ignoring the Z values.  
	---If useZ is false, only the 2D plane (X-Y) will be considered for calculating the distance.  
	---  
	---Consider using this faster native instead: SYSTEM::VDIST - DVIST always takes in consideration the 3D coordinates.  
	GET_DISTANCE_BETWEEN_COORDS = function(x1, y1, z1, x2, y2, z2, useZ) return invoker.call(0xF1B760881820C952, x1, y1, z1, x2, y2, z2, useZ).float end,
	---  
	GET_ANGLE_BETWEEN_2D_VECTORS = function(x1, y1, x2, y2) return invoker.call(0x186FC4BE848E1C92, x1, y1, x2, y2).float end,
	---dx = x1 - x2  
	---dy = y1 - y2  
	GET_HEADING_FROM_VECTOR_2D = function(dx, dy) return invoker.call(0x2FFB6B224F4B2926, dx, dy).float end,
	---returns a float between 0.0 and 1.0, clamp: sets whether the product should be clamped between the given coordinates  
	GET_RATIO_OF_CLOSEST_POINT_ON_LINE = function(x1, y1, z1, x2, y2, z2, x3, y3, z3, clamp) return invoker.call(0x7F8F6405F4777AF6, x1, y1, z1, x2, y2, z2, x3, y3, z3, clamp).float end,
	---clamp: sets whether the product should be clamped between the given coordinates  
	GET_CLOSEST_POINT_ON_LINE = function(x1, y1, z1, x2, y2, z2, x3, y3, z3, clamp) return invoker.call(0x21C235BC64831E5A, x1, y1, z1, x2, y2, z2, x3, y3, z3, clamp).scr_vec3 end,
	---  
	GET_LINE_PLANE_INTERSECTION = function(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12) return invoker.call(0xF56DFB7B61BE7276, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12).bool end,
	---  
	GET_POINT_AREA_OVERLAP = function(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13) return invoker.call(0xA0AD167E4B39D9A2, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13).bool end,
	---This sets bit [offset] of [address] to on.  
	---  
	---The offsets used are different bits to be toggled on and off, typically there is only one address used in a script.  
	---  
	---Example:  
	---MISC::SET_BIT(&bitAddress, 1);  
	---  
	---To check if this bit has been enabled:  
	---MISC::IS_BIT_SET(bitAddress, 1); // will return 1 afterwards  
	---  
	---Please note, this method may assign a value to [address] when used.  
	SET_BIT = function(address, offset) invoker.call(0x933D6A9EEC1BACD0, address, offset) end,
	---This sets bit [offset] of [address] to off.  
	---  
	---Example:  
	---MISC::CLEAR_BIT(&bitAddress, 1);  
	---  
	---To check if this bit has been enabled:  
	---MISC::IS_BIT_SET(bitAddress, 1); // will return 0 afterwards  
	CLEAR_BIT = function(address, offset) invoker.call(0xE80492A9AC099A93, address, offset) end,
	---This native converts its past string to hash. It is hashed using jenkins one at a time method.  
	GET_HASH_KEY = function(string) return invoker.call(0xD24D37CC275948CC, string).int end,
	---This native always come right before SET_ENTITY_QUATERNION where its final 4 parameters are SLERP_NEAR_QUATERNION p9 to p12  
	SLERP_NEAR_QUATERNION = function(t, x, y, z, w, x1, y1, z1, w1, outX, outY, outZ, outW) invoker.call(0xF2F6A2FA49278625, t, x, y, z, w, x1, y1, z1, w1, outX, outY, outZ, outW) end,
	---  
	IS_AREA_OCCUPIED = function(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12) return invoker.call(0xA61B4DF533DCB56E, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12).bool end,
	---  
	IS_AREA_OCCUPIED_SLOW = function(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12) return invoker.call(0x39455BF4F4F55186, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12).bool end,
	---`range`: The range, seems to not be very accurate during testing.  
	---`p4`: Unknown, when set to true it seems to always return true no matter what I try.  
	---`checkVehicle`: Check for any vehicles in that area.  
	---`checkPeds`: Check for any peds in that area.  
	---`ignoreEntity`: This entity will be ignored if it's in the area. Set to 0 if you don't want to exclude any entities.  
	---The BOOL parameters that are documented have not been confirmed. They are just documented from what I've found during testing. They may not work as expected in all cases.  
	---  
	---Returns true if there is anything in that location matching the provided parameters.  
	IS_POSITION_OCCUPIED = function(x, y, z, range, p4, checkVehicles, checkPeds, p7, p8, ignoreEntity, p10) return invoker.call(0xADCDE75E1C60F32D, x, y, z, range, p4, checkVehicles, checkPeds, p7, p8, ignoreEntity, p10).bool end,
	---  
	IS_POINT_OBSCURED_BY_A_MISSION_ENTITY = function(p0, p1, p2, p3, p4, p5, p6) return invoker.call(0xE54E209C35FFA18D, p0, p1, p2, p3, p4, p5, p6).bool end,
	---Example: CLEAR_AREA(0, 0, 0, 30, true, false, false, false);  
	CLEAR_AREA = function(X, Y, Z, radius, p4, ignoreCopCars, ignoreObjects, p7) invoker.call(0xA56F01F3765B93A0, X, Y, Z, radius, p4, ignoreCopCars, ignoreObjects, p7) end,
	---MISC::CLEAR_AREA_LEAVE_VEHICLE_HEALTH(x, y, z, radius, false, false, false, false); seem to make all objects go away, peds, vehicles etc. All booleans set to true doesn't seem to change anything.   
	CLEAR_AREA_LEAVE_VEHICLE_HEALTH = function(x, y, z, radius, p4, p5, p6, p7) invoker.call(0x957838AAF91BD12D, x, y, z, radius, p4, p5, p6, p7) end,
	---Example:  
	---CLEAR_AREA_OF_VEHICLES(0.0f, 0.0f, 0.0f, 10000.0f, false, false, false, false, false, false);  
	CLEAR_AREA_OF_VEHICLES = function(x, y, z, radius, p4, p5, p6, p7, p8, p9, p10) invoker.call(0x01C7B9B38428AEB6, x, y, z, radius, p4, p5, p6, p7, p8, p9, p10) end,
	---  
	CLEAR_ANGLED_AREA_OF_VEHICLES = function(x1, y1, z1, x2, y2, z2, width, p7, p8, p9, p10, p11, p12, p13) invoker.call(0x11DB3500F042A8AA, x1, y1, z1, x2, y2, z2, width, p7, p8, p9, p10, p11, p12, p13) end,
	---I looked through the PC scripts that this site provides you with a link to find. It shows the last param mainly uses, (0, 2, 6, 16, and 17) so I am going to assume it is a type of flag.   
	CLEAR_AREA_OF_OBJECTS = function(x, y, z, radius, flags) invoker.call(0xDD9B9B385AAC7F5B, x, y, z, radius, flags) end,
	---Example:       CLEAR_AREA_OF_PEDS(0, 0, 0, 10000, 1);  
	CLEAR_AREA_OF_PEDS = function(x, y, z, radius, flags) invoker.call(0xBE31FD6CE464AC59, x, y, z, radius, flags) end,
	---flags appears to always be 0  
	CLEAR_AREA_OF_COPS = function(x, y, z, radius, flags) invoker.call(0x04F8FC8FCF58F88D, x, y, z, radius, flags) end,
	---flags is usually 0 in the scripts.  
	CLEAR_AREA_OF_PROJECTILES = function(x, y, z, radius, flags) invoker.call(0x0A1CB9094635D1A6, x, y, z, radius, flags) end,
	---Possibly used to clear scenario points.  
	CLEAR_SCENARIO_SPAWN_HISTORY = function() invoker.call(0x7EC6F9A478A6A512) end,
	---ignoreVehicle - bypasses vehicle check of the local player (it will not open if you are in a vehicle and this is set to false)  
	SET_SAVE_MENU_ACTIVE = function(ignoreVehicle) invoker.call(0xC9BF75D28165FF77, ignoreVehicle) end,
	---  
	GET_STATUS_OF_MANUAL_SAVE = function() return invoker.call(0x397BAA01068BAA96).int end,
	---  
	SET_CREDITS_ACTIVE = function(toggle) invoker.call(0xB938B7E6D3C0620C, toggle) end,
	---  
	SET_CREDITS_FADE_OUT_WITH_SCREEN = function(toggle) invoker.call(0xB51B9AB9EF81868C, toggle) end,
	---  
	HAVE_CREDITS_REACHED_END = function() return invoker.call(0x075F1D57402C93BA).bool end,
	---  
	ARE_CREDITS_RUNNING = function() return invoker.call(0xD19C0826DC20CF1C).bool end,
	---  
	TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME = function(scriptName) invoker.call(0x9DC711BC69C548DF, scriptName) end,
	---  
	NETWORK_SET_SCRIPT_IS_SAFE_FOR_NETWORK_GAME = function() invoker.call(0x9243BAC96D64C050) end,
	---Returns the index of the newly created hospital spawn point.  
	---  
	---p3 might be radius?  
	ADD_HOSPITAL_RESTART = function(x, y, z, p3, p4) return invoker.call(0x1F464EF988465A81, x, y, z, p3, p4).int end,
	---The game by default has 5 hospital respawn points. Disabling them all will cause the player to respawn at the last position they were.  
	DISABLE_HOSPITAL_RESTART = function(hospitalIndex, toggle) invoker.call(0xC8535819C450EBA8, hospitalIndex, toggle) end,
	---  
	ADD_POLICE_RESTART = function(p0, p1, p2, p3, p4) return invoker.call(0x452736765B31FC4B, p0, p1, p2, p3, p4).int end,
	---Disables the spawn point at the police house on the specified index.  
	---  
	---policeIndex: The police house index.  
	---toggle: true to enable the spawn point, false to disable.  
	---  
	---- Nacorpio  
	DISABLE_POLICE_RESTART = function(policeIndex, toggle) invoker.call(0x23285DED6EBD7EA3, policeIndex, toggle) end,
	---  
	SET_RESTART_COORD_OVERRIDE = function(x, y, z, heading) invoker.call(0x706B5EDCAA7FA663, x, y, z, heading) end,
	---  
	CLEAR_RESTART_COORD_OVERRIDE = function() invoker.call(0xA2716D40842EAF79) end,
	---  
	PAUSE_DEATH_ARREST_RESTART = function(toggle) invoker.call(0x2C2B3493FBF51C71, toggle) end,
	---  
	IGNORE_NEXT_RESTART = function(toggle) invoker.call(0x21FFB63D8C615361, toggle) end,
	---Sets whether the game should fade out after the player dies.  
	SET_FADE_OUT_AFTER_DEATH = function(toggle) invoker.call(0x4A18E01DF2C87B86, toggle) end,
	---Sets whether the game should fade out after the player is arrested.  
	SET_FADE_OUT_AFTER_ARREST = function(toggle) invoker.call(0x1E0B4DC0D990A4E7, toggle) end,
	---Sets whether the game should fade in after the player dies or is arrested.  
	SET_FADE_IN_AFTER_DEATH_ARREST = function(toggle) invoker.call(0xDA66D2796BA33F12, toggle) end,
	---  
	SET_FADE_IN_AFTER_LOAD = function(toggle) invoker.call(0xF3D78F59DFE18D79, toggle) end,
	---returns savehouseHandle  
	REGISTER_SAVE_HOUSE = function(x, y, z, p3, p4, p5, p6) return invoker.call(0xC0714D0A7EEECA54, x, y, z, p3, p4, p5, p6).int end,
	---  
	SET_SAVE_HOUSE = function(savehouseHandle, p1, p2) invoker.call(0x4F548CABEAE553BC, savehouseHandle, p1, p2) end,
	---  
	OVERRIDE_SAVE_HOUSE = function(p0, p1, p2, p3, p4, p5, p6, p7) return invoker.call(0x1162EA8AE9D24EEA, p0, p1, p2, p3, p4, p5, p6, p7).bool end,
	---  
	GET_SAVE_HOUSE_DETAILS_AFTER_SUCCESSFUL_LOAD = function(p0, p1, fadeInAfterLoad, p3) return invoker.call(0xA4A0065E39C9F25C, p0, p1, fadeInAfterLoad, p3).bool end,
	---  
	DO_AUTO_SAVE = function() invoker.call(0x50EEAAD86232EE55) end,
	---Returns true if profile setting 208 is equal to 0.  
	GET_IS_AUTO_SAVE_OFF = function() return invoker.call(0x6E04F06094C87047).bool end,
	---  
	IS_AUTO_SAVE_IN_PROGRESS = function() return invoker.call(0x69240733738C19A0).bool end,
	---  
	HAS_CODE_REQUESTED_AUTOSAVE = function() return invoker.call(0x2107A3773771186D).bool end,
	---  
	CLEAR_CODE_REQUESTED_AUTOSAVE = function() invoker.call(0x06462A961E94B67C) end,
	---  
	BEGIN_REPLAY_STATS = function(p0, p1) invoker.call(0xE0E500246FF73D66, p0, p1) end,
	---  
	ADD_REPLAY_STAT_VALUE = function(value) invoker.call(0x69FE6DC87BD2A5E9, value) end,
	---  
	END_REPLAY_STATS = function() invoker.call(0xA23E821FBDF8A5F2) end,
	---  
	HAVE_REPLAY_STATS_BEEN_STORED = function() return invoker.call(0xD642319C54AADEB6).bool end,
	---  
	GET_REPLAY_STAT_MISSION_ID = function() return invoker.call(0x5B1F2E327B6B6FE1).int end,
	---  
	GET_REPLAY_STAT_MISSION_TYPE = function() return invoker.call(0x2B626A0150E4D449).int end,
	---  
	GET_REPLAY_STAT_COUNT = function() return invoker.call(0xDC9274A7EF6B2867).int end,
	---  
	GET_REPLAY_STAT_AT_INDEX = function(index) return invoker.call(0x8098C8D6597AAE18, index).int end,
	---  
	CLEAR_REPLAY_STATS = function() invoker.call(0x1B1AB132A16FDA55) end,
	---  
	QUEUE_MISSION_REPEAT_LOAD = function() return invoker.call(0x72DE52178C291CB5).bool end,
	---Shows the screen which is visible before you redo a mission? The game will make a restoration point where you will cameback when the mission is over.  
	---Returns 1 if the message isn't currently on screen  
	QUEUE_MISSION_REPEAT_SAVE = function() return invoker.call(0x44A0BDC559B35F6E).bool end,
	---  
	QUEUE_MISSION_REPEAT_SAVE_FOR_BENCHMARK_TEST = function() return invoker.call(0xEB2104E905C6F2E9).bool end,
	---  
	GET_STATUS_OF_MISSION_REPEAT_SAVE = function() return invoker.call(0x2B5E102E4A42F2BF).int end,
	---  
	IS_MEMORY_CARD_IN_USE = function() return invoker.call(0x8A75CE2956274ADD).bool end,
	---  
	SHOOT_SINGLE_BULLET_BETWEEN_COORDS = function(x1, y1, z1, x2, y2, z2, damage, p7, weaponHash, ownerPed, isAudible, isInvisible, speed) invoker.call(0x867654CBC7606F2C, x1, y1, z1, x2, y2, z2, damage, p7, weaponHash, ownerPed, isAudible, isInvisible, speed) end,
	---entity - entity to ignore  
	SHOOT_SINGLE_BULLET_BETWEEN_COORDS_IGNORE_ENTITY = function(x1, y1, z1, x2, y2, z2, damage, p7, weaponHash, ownerPed, isAudible, isInvisible, speed, entity, p14) invoker.call(0xE3A7742E0B7A2F8B, x1, y1, z1, x2, y2, z2, damage, p7, weaponHash, ownerPed, isAudible, isInvisible, speed, entity, p14) end,
	---entity - entity to ignore  
	---targetEntity - entity to home in on, if the weapon hash provided supports homing  
	SHOOT_SINGLE_BULLET_BETWEEN_COORDS_IGNORE_ENTITY_NEW = function(x1, y1, z1, x2, y2, z2, damage, p7, weaponHash, ownerPed, isAudible, isInvisible, speed, entity, p14, p15, targetEntity, p17, p18, p19, p20) invoker.call(0xBFE5756E7407064A, x1, y1, z1, x2, y2, z2, damage, p7, weaponHash, ownerPed, isAudible, isInvisible, speed, entity, p14, p15, targetEntity, p17, p18, p19, p20) end,
	---Gets the dimensions of a model.  
	---  
	---Calculate (maximum - minimum) to get the size, in which case, Y will be how long the model is.  
	---  
	---Example from the scripts: MISC::GET_MODEL_DIMENSIONS(ENTITY::GET_ENTITY_MODEL(PLAYER::PLAYER_PED_ID()), &v_1A, &v_17);  
	GET_MODEL_DIMENSIONS = function(modelHash, minimum, maximum) invoker.call(0x03E8D3D5F549087A, modelHash, minimum, maximum) end,
	---Sets a visually fake wanted level on the user interface. Used by Rockstar's scripts to "override" regular wanted levels and make custom ones while the real wanted level and multipliers are still in effect.  
	---  
	---Max is 6, anything above this makes it just 6. Also the mini-map gets the red & blue flashing effect.  
	SET_FAKE_WANTED_LEVEL = function(fakeWantedLevel) invoker.call(0x1454F2448DE30163, fakeWantedLevel) end,
	---  
	GET_FAKE_WANTED_LEVEL = function() return invoker.call(0x4C9296CBCD1B971E).int end,
	---  
	USING_MISSION_CREATOR = function(toggle) invoker.call(0xF14878FC50BEC6EE, toggle) end,
	---  
	ALLOW_MISSION_CREATOR_WARP = function(toggle) invoker.call(0xDEA36202FC3382DF, toggle) end,
	---  
	SET_MINIGAME_IN_PROGRESS = function(toggle) invoker.call(0x19E00D7322C6F85B, toggle) end,
	---  
	IS_MINIGAME_IN_PROGRESS = function() return invoker.call(0x2B4A15E44DE0F478).bool end,
	---  
	IS_THIS_A_MINIGAME_SCRIPT = function() return invoker.call(0x7B30F65D7B710098).bool end,
	---This function is hard-coded to always return 0.  
	IS_SNIPER_INVERTED = function() return invoker.call(0x61A23B7EDA9BDA24).bool end,
	---Returns true if the game is using the metric measurement system (profile setting 227), false if imperial is used.  
	SHOULD_USE_METRIC_MEASUREMENTS = function() return invoker.call(0xD3D15555431AB793).bool end,
	---  
	GET_PROFILE_SETTING = function(profileSetting) return invoker.call(0xC488FF2356EA7791, profileSetting).int end,
	---  
	ARE_STRINGS_EQUAL = function(string1, string2) return invoker.call(0x0C515FAB3FF9EA92, string1, string2).bool end,
	---Compares two strings up to a specified number of characters.  
	---  
	---Parameters:  
	---str1 - String to be compared.  
	---str2 - String to be compared.  
	---matchCase - Comparison will be case-sensitive.  
	---maxLength - Maximum number of characters to compare. A value of -1 indicates an infinite length.  
	---  
	---Returns:  
	---A value indicating the relationship between the strings:  
	---<0 - The first non-matching character in 'str1' is less than the one in 'str2'. (e.g. 'A' < 'B', so result = -1)  
	---0 - The contents of both strings are equal.  
	--->0 - The first non-matching character in 'str1' is less than the one in 'str2'. (e.g. 'B' > 'A', so result = 1)  
	---  
	---Examples:  
	---MISC::COMPARE_STRINGS("STRING", "string", false, -1); // 0; equal  
	---MISC::COMPARE_STRINGS("TESTING", "test", false, 4); // 0; equal  
	---MISC::COMPARE_STRINGS("R2D2", "R2xx", false, 2); // 0; equal  
	---MISC::COMPARE_STRINGS("foo", "bar", false, -1); // 4; 'f' > 'b'  
	---MISC::COMPARE_STRINGS("A", "A", true, 1); // 0; equal  
	---  
	---When comparing case-sensitive strings, lower-case characters are greater than upper-case characters:  
	---MISC::COMPARE_STRINGS("A", "a", true, 1); // -1; 'A' < 'a'  
	---MISC::COMPARE_STRINGS("a", "A", true, 1); // 1; 'a' > 'A'  
	COMPARE_STRINGS = function(str1, str2, matchCase, maxLength) return invoker.call(0x1E34710ECD4AB0EB, str1, str2, matchCase, maxLength).int end,
	---  
	ABSI = function(value) return invoker.call(0xF0D31AD191A74F87, value).int end,
	---  
	ABSF = function(value) return invoker.call(0x73D57CFFDD12C355, value).float end,
	---Determines whether there is a sniper bullet within the specified coordinates. The coordinates form an axis-aligned bounding box.  
	IS_SNIPER_BULLET_IN_AREA = function(x1, y1, z1, x2, y2, z2) return invoker.call(0xFEFCF11B01287125, x1, y1, z1, x2, y2, z2).bool end,
	---Determines whether there is a projectile within the specified coordinates. The coordinates form a rectangle.  
	---  
	---- Nacorpio  
	---  
	---  
	---ownedByPlayer = only projectiles fired by the player will be detected.  
	IS_PROJECTILE_IN_AREA = function(x1, y1, z1, x2, y2, z2, ownedByPlayer) return invoker.call(0x5270A8FBC098C3F8, x1, y1, z1, x2, y2, z2, ownedByPlayer).bool end,
	---Determines whether there is a projectile of a specific type within the specified coordinates. The coordinates form a axis-aligned bounding box.  
	IS_PROJECTILE_TYPE_IN_AREA = function(x1, y1, z1, x2, y2, z2, type, ownedByPlayer) return invoker.call(0x2E0DC353342C4A6D, x1, y1, z1, x2, y2, z2, type, ownedByPlayer).bool end,
	---See IS_POINT_IN_ANGLED_AREA for the definition of an angled area.  
	IS_PROJECTILE_TYPE_IN_ANGLED_AREA = function(x1, y1, z1, x2, y2, z2, width, p7, ownedByPlayer) return invoker.call(0xF0BC12401061DEA0, x1, y1, z1, x2, y2, z2, width, p7, ownedByPlayer).bool end,
	---  
	IS_PROJECTILE_TYPE_WITHIN_DISTANCE = function(x, y, z, projectileHash, radius, ownedByPlayer) return invoker.call(0x34318593248C8FB2, x, y, z, projectileHash, radius, ownedByPlayer).bool end,
	---  
	GET_COORDS_OF_PROJECTILE_TYPE_IN_AREA = function(x1, y1, z1, x2, y2, z2, projectileHash, projectilePos, ownedByPlayer) return invoker.call(0x8D7A43EC6A5FEA45, x1, y1, z1, x2, y2, z2, projectileHash, projectilePos, ownedByPlayer).bool end,
	---  
	GET_COORDS_OF_PROJECTILE_TYPE_IN_ANGLED_AREA = function(vecAngledAreaPoint1X, vecAngledAreaPoint1Y, vecAngledAreaPoint1Z, vecAngledAreaPoint2X, vecAngledAreaPoint2Y, vecAngledAreaPoint2Z, distanceOfOppositeFace, weaponType, positionOut, bIsPlayer) return invoker.call(0x3DA8C28346B62CED, vecAngledAreaPoint1X, vecAngledAreaPoint1Y, vecAngledAreaPoint1Z, vecAngledAreaPoint2X, vecAngledAreaPoint2Y, vecAngledAreaPoint2Z, distanceOfOppositeFace, weaponType, positionOut, bIsPlayer).bool end,
	---  
	GET_COORDS_OF_PROJECTILE_TYPE_WITHIN_DISTANCE = function(ped, weaponHash, distance, outCoords, p4) return invoker.call(0xDFB4138EEFED7B81, ped, weaponHash, distance, outCoords, p4).bool end,
	---  
	GET_PROJECTILE_OF_PROJECTILE_TYPE_WITHIN_DISTANCE = function(ped, weaponHash, distance, outCoords, outProjectile, p5) return invoker.call(0x82FDE6A57EE4EE44, ped, weaponHash, distance, outCoords, outProjectile, p5).bool end,
	---For projectiles, see: IS_PROJECTILE_TYPE_IN_ANGLED_AREA  
	---See IS_POINT_IN_ANGLED_AREA for the definition of an angled area.  
	---Returns True if a bullet, as maintained by a pool within CWeaponManager, has been fired into the defined angled area.  
	IS_BULLET_IN_ANGLED_AREA = function(x1, y1, z1, x2, y2, z2, width, ownedByPlayer) return invoker.call(0x1A8B5F3C01E2B477, x1, y1, z1, x2, y2, z2, width, ownedByPlayer).bool end,
	---  
	IS_BULLET_IN_AREA = function(x, y, z, radius, ownedByPlayer) return invoker.call(0x3F2023999AD51C1F, x, y, z, radius, ownedByPlayer).bool end,
	---  
	IS_BULLET_IN_BOX = function(x1, y1, z1, x2, y2, z2, ownedByPlayer) return invoker.call(0xDE0F6D7450D37351, x1, y1, z1, x2, y2, z2, ownedByPlayer).bool end,
	---p3 - possibly radius?  
	HAS_BULLET_IMPACTED_IN_AREA = function(x, y, z, p3, p4, p5) return invoker.call(0x9870ACFB89A90995, x, y, z, p3, p4, p5).bool end,
	---  
	HAS_BULLET_IMPACTED_IN_BOX = function(p0, p1, p2, p3, p4, p5, p6, p7) return invoker.call(0xDC8C5D7CFEAB8394, p0, p1, p2, p3, p4, p5, p6, p7).bool end,
	---PS4  
	IS_ORBIS_VERSION = function() return invoker.call(0xA72BC0B675B1519E).bool end,
	---XBOX ONE  
	IS_DURANGO_VERSION = function() return invoker.call(0x4D982ADB1978442D).bool end,
	---  
	IS_XBOX360_VERSION = function() return invoker.call(0xF6201B4DAF662A9D).bool end,
	---  
	IS_PS3_VERSION = function() return invoker.call(0xCCA1072C29D096C2).bool end,
	---  
	IS_PC_VERSION = function() return invoker.call(0x48AF36444B965238).bool end,
	---  
	IS_STEAM_VERSION = function() return invoker.call(0x0A27B2B6282F7169).bool end,
	---  
	_IS_XBOXPC_VERSION = function() return invoker.call(0xE2BCD0EFAE90D1F4).bool end,
	---Used to block some of the prostitute stuff due to laws in Australia.  
	IS_AUSSIE_VERSION = function() return invoker.call(0x9F1935CA1F724008).bool end,
	---  
	IS_JAPANESE_VERSION = function() return invoker.call(0xB8C0BB75D8A77DB3).bool end,
	---  
	IS_XBOX_PLATFORM = function() return invoker.call(0x138679CA01E21F53).bool end,
	---Xbox Series (Scarlett) version...  
	IS_SCARLETT_VERSION = function() return invoker.call(0xC545AB1CF97ABB34).bool end,
	---  
	IS_SCE_PLATFORM = function() return invoker.call(0xF911E695C1EB8518).bool end,
	---PS5 (Prospero) version...  
	IS_PROSPERO_VERSION = function() return invoker.call(0x807ABE1AB65C24D2).bool end,
	---  
	IS_STRING_NULL = function(string) return invoker.call(0xF22B6C47C6EAB066, string).bool end,
	---  
	IS_STRING_NULL_OR_EMPTY = function(string) return invoker.call(0xCA042B6957743895, string).bool end,
	---Returns false if it's a null or empty string or if the string is too long. outInteger will be set to -999 in that case.  
	---  
	---If all checks have passed successfully, the return value will be set to whatever strtol(string, 0i64, 10); returns.  
	STRING_TO_INT = function(string, outInteger) return invoker.call(0x5A5F40FE637EB584, string, outInteger).bool end,
	---  
	SET_BITS_IN_RANGE = function(var, rangeStart, rangeEnd, p3) invoker.call(0x8EF07E15701D61ED, var, rangeStart, rangeEnd, p3) end,
	---  
	GET_BITS_IN_RANGE = function(var, rangeStart, rangeEnd) return invoker.call(0x53158863FCC0893A, var, rangeStart, rangeEnd).int end,
	---See description of `ADD_STUNT_JUMP_ANGLED` for detailed info. The only difference really is this one does not have the radius (or angle, not sure) floats parameters for entry and landing zones.  
	ADD_STUNT_JUMP = function(x1, y1, z1, x2, y2, z2, x3, y3, z3, x4, y4, z4, camX, camY, camZ, p15, p16, p17) return invoker.call(0x1A992DA297A4630C, x1, y1, z1, x2, y2, z2, x3, y3, z3, x4, y4, z4, camX, camY, camZ, p15, p16, p17).int end,
	---Creates a new stunt jump.  
	---  
	---The radius1 and radius2 might actually not be a radius at all, but that's what it seems to me testing them in-game. But they may be 'angle' floats instead, considering this native is named ADD_STUNT_JUMP_**ANGLED**.  
	---  
	---Info about the specific 'parameter sections':  
	---  
	---  
	---**x1, y1, z1, x2, y2, z2 and radius1:**  
	---  
	---First coordinates are for the jump entry area, and the radius that will be checked around that area. So if you're not exactly within the coordinates, but you are within the outter radius limit then it will still register as entering the stunt jump. Note as mentioned above, the radius is just a guess, I'm not really sure about it's exact purpose.  
	---  
	---  
	---**x3, y3, z3, x4, y4, z4 and radius2:**  
	---  
	---Next part is the landing area, again starting with the left bottom (nearest to the stunt jump entry zone) coordinate, and the second one being the top right furthest away part of the landing area. Followed by another (most likely) radius float, this is usually slightly larger than the entry zone 'radius' float value, just because you have quite a lot of places where you can land (I'm guessing).  
	---  
	---  
	---**camX, camY and camZ:**  
	---  
	---The final coordinate in this native is the Camera position. Rotation and zoom/FOV is managed by the game itself, you just need to provide the camera location.  
	---  
	---  
	---**unk1, unk2 and unk3:**  
	---  
	---Not sure what these are for, but they're always `150, 0, 0` in decompiled scripts.  
	---  
	---Here is a list of almost all of the stunt jumps from GTA V (taken from decompiled scripts): https://pastebin.com/EW1jBPkY  
	ADD_STUNT_JUMP_ANGLED = function(x1, y1, z1, x2, y2, z2, radius1, x3, y3, z3, x4, y4, z4, radius2, camX, camY, camZ, p17, p18, p19) return invoker.call(0xBBE5D803A5360CBF, x1, y1, z1, x2, y2, z2, radius1, x3, y3, z3, x4, y4, z4, radius2, camX, camY, camZ, p17, p18, p19).int end,
	---Toggles some stunt jump stuff.  
	TOGGLE_SHOW_OPTIONAL_STUNT_JUMP_CAMERA = function(toggle) invoker.call(0xFB80AB299D2EE1BD, toggle) end,
	---  
	DELETE_STUNT_JUMP = function(p0) invoker.call(0xDC518000E39DAE1F, p0) end,
	---  
	ENABLE_STUNT_JUMP_SET = function(p0) invoker.call(0xE369A5783B866016, p0) end,
	---  
	DISABLE_STUNT_JUMP_SET = function(p0) invoker.call(0xA5272EBEDD4747F6, p0) end,
	---  
	SET_STUNT_JUMPS_CAN_TRIGGER = function(toggle) invoker.call(0xD79185689F8FD5DF, toggle) end,
	---  
	IS_STUNT_JUMP_IN_PROGRESS = function() return invoker.call(0x7A3F19700A4D0525).bool end,
	---  
	IS_STUNT_JUMP_MESSAGE_SHOWING = function() return invoker.call(0x2272B0A1343129F4).bool end,
	---  
	GET_NUM_SUCCESSFUL_STUNT_JUMPS = function() return invoker.call(0x996DD1E1E02F1008).int end,
	---  
	GET_TOTAL_SUCCESSFUL_STUNT_JUMPS = function() return invoker.call(0x6856EC3D35C81EA4).int end,
	---  
	CANCEL_STUNT_JUMP = function() invoker.call(0xE6B7B0ACD4E4B75E) end,
	---Make sure to call this from the correct thread if you're using multiple threads because all other threads except the one which is calling SET_GAME_PAUSED will be paused which means you will lose control and the game remains in paused mode until you exit GTA5.exe  
	SET_GAME_PAUSED = function(toggle) invoker.call(0x577D1284D6873711, toggle) end,
	---  
	SET_THIS_SCRIPT_CAN_BE_PAUSED = function(toggle) invoker.call(0xAA391C728106F7AF, toggle) end,
	---  
	SET_THIS_SCRIPT_CAN_REMOVE_BLIPS_CREATED_BY_ANY_SCRIPT = function(toggle) invoker.call(0xB98236CAAECEF897, toggle) end,
	---This native appears on the cheat_controller script and tracks a combination of buttons, which may be used to toggle cheats in-game. Credits to ThreeSocks for the info. The hash contains the combination, while the "amount" represents the amount of buttons used in a combination. The following page can be used to make a button combination: gta5offset.com/ts/hash/  
	---  
	---INT_SCORES_SCORTED was a hash collision  
	HAS_CHEAT_WITH_HASH_BEEN_ACTIVATED = function(hash, amount) return invoker.call(0x071E2A839DE82D90, hash, amount).bool end,
	---Get inputted "Cheat code", for example:  
	---  
	---while (TRUE)  
	---{  
	---    if (MISC::HAS_PC_CHEAT_WITH_HASH_BEEN_ACTIVATED(${fugitive}))  
	---    {  
	---       // Do something.  
	---    }  
	---    SYSTEM::WAIT(0);  
	---}  
	---  
	---Calling this will also set the last saved string hash to zero.  
	---  
	HAS_PC_CHEAT_WITH_HASH_BEEN_ACTIVATED = function(hash) return invoker.call(0x557E43C447E700A8, hash).bool end,
	---  
	OVERRIDE_FREEZE_FLAGS = function(p0) invoker.call(0xFA3FFB0EEBC288A3, p0) end,
	---Formerly known as _LOWER_MAP_PROP_DENSITY and wrongly due to idiots as _ENABLE_MP_DLC_MAPS.  
	---Sets the maximum prop density and changes a loading screen flag from 'loading story mode' to 'loading GTA Online'. Does not touch DLC map data at all.  
	---  
	---In fact, I doubt this changes the flag whatsoever, that's the OTHER native idiots use together with this that does so, this one only causes a loading screen to show as it reloads map data.  
	SET_INSTANCE_PRIORITY_MODE = function(p0) invoker.call(0x9BAE5AD2508DF078, p0) end,
	---Sets an unknown flag used by CScene in determining which entities from CMapData scene nodes to draw, similar to SET_INSTANCE_PRIORITY_MODE.  
	SET_INSTANCE_PRIORITY_HINT = function(flag) invoker.call(0xC5F0A8EBD3F361CE, flag) end,
	---This function is hard-coded to always return 0.  
	IS_FRONTEND_FADING = function() return invoker.call(0x7EA2B6AF97ECA6ED).bool end,
	---spawns a few distant/out-of-sight peds, vehicles, animals etc each time it is called  
	POPULATE_NOW = function() invoker.call(0x7472BB270D7B4F3E) end,
	---  
	GET_INDEX_OF_CURRENT_LEVEL = function() return invoker.call(0xCBAD6729F7B1F4FC).int end,
	---level can be from 0 to 3  
	---0: 9.8 - normal  
	---1: 2.4 - low  
	---2: 0.1 - very low  
	---3: 0.0 - off  
	SET_GRAVITY_LEVEL = function(level) invoker.call(0x740E14FAD5842351, level) end,
	---  
	START_SAVE_DATA = function(p0, p1, p2) invoker.call(0xA9575F812C6A7997, p0, p1, p2) end,
	---  
	STOP_SAVE_DATA = function() invoker.call(0x74E20C9145FB66FD) end,
	---  
	GET_SIZE_OF_SAVE_DATA = function(p0) return invoker.call(0xA09F896CE912481F, p0).int end,
	---  
	REGISTER_INT_TO_SAVE = function(p0, name) invoker.call(0x34C9EE5986258415, p0, name) end,
	---  
	REGISTER_INT64_TO_SAVE = function(p0, name) invoker.call(0xA735353C77334EA0, p0, name) end,
	---  
	REGISTER_ENUM_TO_SAVE = function(p0, name) invoker.call(0x10C2FA78D0E128A1, p0, name) end,
	---  
	REGISTER_FLOAT_TO_SAVE = function(p0, name) invoker.call(0x7CAEC29ECB5DFEBB, p0, name) end,
	---  
	REGISTER_BOOL_TO_SAVE = function(p0, name) invoker.call(0xC8F4131414C835A1, p0, name) end,
	---  
	REGISTER_TEXT_LABEL_TO_SAVE = function(p0, name) invoker.call(0xEDB1232C5BEAE62F, p0, name) end,
	---MISC::REGISTER_TEXT_LABEL_15_TO_SAVE(&a_0._f1, "tlPlateText");  
	---MISC::REGISTER_TEXT_LABEL_15_TO_SAVE(&a_0._f1C, "tlPlateText_pending");  
	---MISC::REGISTER_TEXT_LABEL_15_TO_SAVE(&a_0._f10B, "tlCarAppPlateText");  
	REGISTER_TEXT_LABEL_15_TO_SAVE = function(p0, name) invoker.call(0x6F7794F28C6B2535, p0, name) end,
	---Only found 3 times in decompiled scripts.  
	---  
	---MISC::REGISTER_TEXT_LABEL_23_TO_SAVE(a_0, "Movie_Name_For_This_Player");  
	---MISC::REGISTER_TEXT_LABEL_23_TO_SAVE(&a_0._fB, "Ringtone_For_This_Player");  
	---MISC::REGISTER_TEXT_LABEL_23_TO_SAVE(&a_0._f1EC4._f12[v_A/*6*/], &v_13); // where v_13 is "MPATMLOGSCRS0" thru "MPATMLOGSCRS15"  
	REGISTER_TEXT_LABEL_23_TO_SAVE = function(p0, name) invoker.call(0x48F069265A0E4BEC, p0, name) end,
	---Only found 2 times in decompiled scripts.  
	---  
	---MISC::REGISTER_TEXT_LABEL_31_TO_SAVE(&a_0._f1F5A._f6[0/*8*/], "TEMPSTAT_LABEL"); // gets saved in a struct called "g_SaveData_STRING_ScriptSaves"  
	---MISC::REGISTER_TEXT_LABEL_31_TO_SAVE(&a_0._f4B4[v_1A/*8*/], &v_5); // where v_5 is "Name0" thru "Name9", gets saved in a struct called "OUTFIT_Name"  
	REGISTER_TEXT_LABEL_31_TO_SAVE = function(p0, name) invoker.call(0x8269816F6CFD40F8, p0, name) end,
	---MISC::REGISTER_TEXT_LABEL_63_TO_SAVE(a_0, "Thumb_label");  
	---MISC::REGISTER_TEXT_LABEL_63_TO_SAVE(&a_0._f10, "Photo_label");  
	---MISC::REGISTER_TEXT_LABEL_63_TO_SAVE(a_0, "GXTlabel");  
	---MISC::REGISTER_TEXT_LABEL_63_TO_SAVE(&a_0._f21, "StringComp");  
	---MISC::REGISTER_TEXT_LABEL_63_TO_SAVE(&a_0._f43, "SecondStringComp");  
	---MISC::REGISTER_TEXT_LABEL_63_TO_SAVE(&a_0._f53, "ThirdStringComp");  
	---MISC::REGISTER_TEXT_LABEL_63_TO_SAVE(&a_0._f32, "SenderStringComp");  
	---MISC::REGISTER_TEXT_LABEL_63_TO_SAVE(&a_0._f726[v_1A/*16*/], &v_20); // where v_20 is "LastJobTL_0_1" thru "LastJobTL_2_1", gets saved in a struct called "LAST_JobGamer_TL"  
	---MISC::REGISTER_TEXT_LABEL_63_TO_SAVE(&a_0._f4B, "PAID_PLAYER");  
	---MISC::REGISTER_TEXT_LABEL_63_TO_SAVE(&a_0._f5B, "RADIO_STATION");  
	REGISTER_TEXT_LABEL_63_TO_SAVE = function(p0, name) invoker.call(0xFAA457EF263E8763, p0, name) end,
	---  
	START_SAVE_STRUCT_WITH_SIZE = function(p0, size, structName) invoker.call(0xBF737600CDDBEADD, p0, size, structName) end,
	---  
	STOP_SAVE_STRUCT = function() invoker.call(0xEB1774DF12BB9F12) end,
	---  
	START_SAVE_ARRAY_WITH_SIZE = function(p0, size, arrayName) invoker.call(0x60FE567DF1B1AF9D, p0, size, arrayName) end,
	---  
	STOP_SAVE_ARRAY = function() invoker.call(0x04456F95153C6BE4) end,
	---  
	COPY_SCRIPT_STRUCT = function(dst, src, size) invoker.call(0x213AEB2B90CBA7AC, dst, src, size) end,
	---https://alloc8or.re/gta5/doc/enums/DispatchType.txt  
	ENABLE_DISPATCH_SERVICE = function(dispatchService, toggle) invoker.call(0xDC0F817884CDD856, dispatchService, toggle) end,
	---  
	BLOCK_DISPATCH_SERVICE_RESOURCE_CREATION = function(dispatchService, toggle) invoker.call(0x9B2BD3773123EA2F, dispatchService, toggle) end,
	---  
	GET_NUMBER_RESOURCES_ALLOCATED_TO_WANTED_LEVEL = function(dispatchService) return invoker.call(0xEB4A0C2D56441717, dispatchService).int end,
	---As for the 'police' incident, it will call police cars to you, but unlike PedsInCavalcades & Merryweather they won't start shooting at you unless you shoot first or shoot at them. The top 2 however seem to cancel theirselves if there is noone dead around you or a fire. I only figured them out as I found out the 3rd param is definately the amountOfPeople and they called incident 3 in scripts with 4 people (which the firetruck has) and incident 5 with 2 people (which the ambulence has). The 4 param I cant say is radius, but for the pedsInCavalcades and Merryweather R* uses 0.0f and for the top 3 (Emergency Services) they use 3.0f.   
	---  
	---Side Note: It seems calling the pedsInCavalcades or Merryweather then removing it seems to break you from calling the EmergencyEvents and I also believe pedsInCavalcades. (The V cavalcades of course not IV).  
	---  
	---Side Note 2: I say it breaks as if you call this proper,  
	---if(CREATE_INCIDENT) etc it will return false if you do as I said above.  
	---=====================================================  
	CREATE_INCIDENT = function(dispatchService, x, y, z, numUnits, radius, outIncidentID, p7, p8) return invoker.call(0x3F892CAF67444AE7, dispatchService, x, y, z, numUnits, radius, outIncidentID, p7, p8).bool end,
	---As for the 'police' incident, it will call police cars to you, but unlike PedsInCavalcades & Merryweather they won't start shooting at you unless you shoot first or shoot at them. The top 2 however seem to cancel theirselves if there is noone dead around you or a fire. I only figured them out as I found out the 3rd param is definately the amountOfPeople and they called incident 3 in scripts with 4 people (which the firetruck has) and incident 5 with 2 people (which the ambulence has). The 4 param I cant say is radius, but for the pedsInCavalcades and Merryweather R* uses 0.0f and for the top 3 (Emergency Services) they use 3.0f.   
	---  
	---Side Note: It seems calling the pedsInCavalcades or Merryweather then removing it seems to break you from calling the EmergencyEvents and I also believe pedsInCavalcades. (The V cavalcades of course not IV).  
	---  
	---Side Note 2: I say it breaks as if you call this proper,  
	---if(CREATE_INCIDENT) etc it will return false if you do as I said above.  
	---=====================================================  
	CREATE_INCIDENT_WITH_ENTITY = function(dispatchService, ped, numUnits, radius, outIncidentID, p5, p6) return invoker.call(0x05983472F0494E60, dispatchService, ped, numUnits, radius, outIncidentID, p5, p6).bool end,
	---Delete an incident with a given id.  
	---  
	---=======================================================  
	---Correction, I have change this to int, instead of int*  
	---as it doesn't use a pointer to the createdIncident.  
	---If you try it you will crash (or) freeze.  
	---=======================================================  
	DELETE_INCIDENT = function(incidentId) invoker.call(0x556C1AA270D5A207, incidentId) end,
	---=======================================================  
	---Correction, I have change this to int, instead of int*  
	---as it doesn't use a pointer to the createdIncident.  
	---If you try it you will crash (or) freeze.  
	---=======================================================  
	IS_INCIDENT_VALID = function(incidentId) return invoker.call(0xC8BC6461E629BEAA, incidentId).bool end,
	---  
	SET_INCIDENT_REQUESTED_UNITS = function(incidentId, dispatchService, numUnits) invoker.call(0xB08B85D860E7BA3C, incidentId, dispatchService, numUnits) end,
	---  
	SET_IDEAL_SPAWN_DISTANCE_FOR_INCIDENT = function(incidentId, p1) invoker.call(0xD261BA3E7E998072, incidentId, p1) end,
	---Finds a position ahead of the player by predicting the players next actions.  
	---The positions match path finding node positions.  
	---When roads diverge, the position may rapidly change between two or more positions. This is due to the engine not being certain of which path the player will take.  
	FIND_SPAWN_POINT_IN_DIRECTION = function(posX, posY, posZ, fwdVecX, fwdVecY, fwdVecZ, distance, spawnPoint) return invoker.call(0x6874E2190B0C1972, posX, posY, posZ, fwdVecX, fwdVecY, fwdVecZ, distance, spawnPoint).bool end,
	---  
	ADD_POP_MULTIPLIER_AREA = function(x1, y1, z1, x2, y2, z2, p6, p7, p8, p9) return invoker.call(0x67F6413D3220E18D, x1, y1, z1, x2, y2, z2, p6, p7, p8, p9).int end,
	---  
	DOES_POP_MULTIPLIER_AREA_EXIST = function(id) return invoker.call(0x1327E2FE9746BAEE, id).bool end,
	---  
	REMOVE_POP_MULTIPLIER_AREA = function(id, p1) invoker.call(0xB129E447A2EDA4BF, id, p1) end,
	---  
	IS_POP_MULTIPLIER_AREA_NETWORKED = function(id) return invoker.call(0x1312F4B242609CE3, id).bool end,
	---This native is adding a zone, where you can change density settings. For example, you can add a zone on 0.0, 0.0, 0.0 with radius 900.0 and vehicleMultiplier 0.0, and you will not see any new population vehicle spawned in a radius of 900.0 from 0.0, 0.0, 0.0. Returns the id. You can have only 15 zones at the same time. You can remove zone using REMOVE_POP_MULTIPLIER_SPHERE  
	ADD_POP_MULTIPLIER_SPHERE = function(x, y, z, radius, pedMultiplier, vehicleMultiplier, p6, p7) return invoker.call(0x32C7A7E8C43A1F80, x, y, z, radius, pedMultiplier, vehicleMultiplier, p6, p7).int end,
	---  
	DOES_POP_MULTIPLIER_SPHERE_EXIST = function(id) return invoker.call(0x171BAFB3C60389F4, id).bool end,
	---Removes population multiplier sphere  
	REMOVE_POP_MULTIPLIER_SPHERE = function(id, p1) invoker.call(0xE6869BECDD8F2403, id, p1) end,
	---Makes the ped jump around like they're in a tennis match  
	ENABLE_TENNIS_MODE = function(ped, toggle, p2) invoker.call(0x28A04B411933F8A6, ped, toggle, p2) end,
	---  
	IS_TENNIS_MODE = function(ped) return invoker.call(0x5D5479D115290C3F, ped).bool end,
	---Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json  
	PLAY_TENNIS_SWING_ANIM = function(ped, animDict, animName, p3, p4, p5) invoker.call(0xE266ED23311F24D4, ped, animDict, animName, p3, p4, p5) end,
	---  
	GET_TENNIS_SWING_ANIM_COMPLETE = function(ped) return invoker.call(0x17DF68D720AA77F8, ped).bool end,
	---  
	GET_TENNIS_SWING_ANIM_CAN_BE_INTERRUPTED = function(ped) return invoker.call(0x19BFED045C647C49, ped).bool end,
	---  
	GET_TENNIS_SWING_ANIM_SWUNG = function(ped) return invoker.call(0xE95B0C7D5BA3B96B, ped).bool end,
	---  
	PLAY_TENNIS_DIVE_ANIM = function(ped, p1, p2, p3, p4, p5) invoker.call(0x8FA9C42FC5D7C64B, ped, p1, p2, p3, p4, p5) end,
	---From the scripts:  
	---  
	---MISC::SET_TENNIS_MOVE_NETWORK_SIGNAL_FLOAT(sub_aa49(a_0), "ForcedStopDirection", v_E);  
	---  
	---Related to tennis mode.  
	SET_TENNIS_MOVE_NETWORK_SIGNAL_FLOAT = function(ped, p1, p2) invoker.call(0x54F157E0336A3822, ped, p1, p2) end,
	---  
	RESET_DISPATCH_SPAWN_LOCATION = function() invoker.call(0x5896F2BD5683A4E1) end,
	---  
	SET_DISPATCH_SPAWN_LOCATION = function(x, y, z) invoker.call(0xD10F442036302D50, x, y, z) end,
	---  
	RESET_DISPATCH_IDEAL_SPAWN_DISTANCE = function() invoker.call(0x77A84429DD9F0A15) end,
	---  
	SET_DISPATCH_IDEAL_SPAWN_DISTANCE = function(distance) invoker.call(0x6FE601A64180D423, distance) end,
	---  
	RESET_DISPATCH_TIME_BETWEEN_SPAWN_ATTEMPTS = function(p0) invoker.call(0xEB2DB0CAD13154B3, p0) end,
	---  
	SET_DISPATCH_TIME_BETWEEN_SPAWN_ATTEMPTS = function(p0, p1) invoker.call(0x44F7CBC1BEB3327D, p0, p1) end,
	---  
	SET_DISPATCH_TIME_BETWEEN_SPAWN_ATTEMPTS_MULTIPLIER = function(p0, p1) invoker.call(0x48838ED9937A15D1, p0, p1) end,
	---To remove, see: REMOVE_DISPATCH_SPAWN_BLOCKING_AREA  
	---See IS_POINT_IN_ANGLED_AREA for the definition of an angled area.  
	ADD_DISPATCH_SPAWN_ANGLED_BLOCKING_AREA = function(x1, y1, z1, x2, y2, z2, width) return invoker.call(0x918C7B2D2FF3928B, x1, y1, z1, x2, y2, z2, width).int end,
	---  
	ADD_DISPATCH_SPAWN_SPHERE_BLOCKING_AREA = function(x1, y1, x2, y2) return invoker.call(0x2D4259F1FEB81DA9, x1, y1, x2, y2).int end,
	---  
	REMOVE_DISPATCH_SPAWN_BLOCKING_AREA = function(p0) invoker.call(0x264AC28B01B353A5, p0) end,
	---  
	RESET_DISPATCH_SPAWN_BLOCKING_AREAS = function() invoker.call(0xAC7BFD5C1D83EA75) end,
	---  
	RESET_WANTED_RESPONSE_NUM_PEDS_TO_SPAWN = function() invoker.call(0xD9F692D349249528) end,
	---  
	SET_WANTED_RESPONSE_NUM_PEDS_TO_SPAWN = function(p0, p1) invoker.call(0xE532EC1A63231B4F, p0, p1) end,
	---  
	ADD_TACTICAL_NAV_MESH_POINT = function(x, y, z) invoker.call(0xB8721407EE9C3FF6, x, y, z) end,
	---  
	CLEAR_TACTICAL_NAV_MESH_POINTS = function() invoker.call(0xB3CD58CCA6CDA852) end,
	---Activates (usused?) riot mode. All NPCs are being hostile to each other (including player). Also the game will give weapons (pistols, smgs) to random NPCs.  
	SET_RIOT_MODE_ENABLED = function(toggle) invoker.call(0x2587A48BC88DFADF, toggle) end,
	---  
	DISPLAY_ONSCREEN_KEYBOARD_WITH_LONGER_INITIAL_STRING = function(p0, windowTitle, p2, defaultText, defaultConcat1, defaultConcat2, defaultConcat3, defaultConcat4, defaultConcat5, defaultConcat6, defaultConcat7, maxInputLength) invoker.call(0xCA78CFA0366592FE, p0, windowTitle, p2, defaultText, defaultConcat1, defaultConcat2, defaultConcat3, defaultConcat4, defaultConcat5, defaultConcat6, defaultConcat7, maxInputLength) end,
	---sfink: note, p0 is set to 6 for PC platform in at least 1 script, or to `unk::_get_ui_language_id() == 0` otherwise.  
	---  
	---NOTE: windowTitle uses text labels, and an invalid value will display nothing.  
	---  
	---www.gtaforums.com/topic/788343-vrel-script-hook-v/?p=1067380474  
	---  
	---windowTitle's  
	--------------------  
	---CELL_EMAIL_BOD  =   "Enter your Eyefind message"  
	---CELL_EMAIL_BODE =   "Message too long. Try again"  
	---CELL_EMAIL_BODF    =   "Forbidden message. Try again"  
	---CELL_EMAIL_SOD    =   "Enter your Eyefind subject"  
	---CELL_EMAIL_SODE =   "Subject too long. Try again"  
	---CELL_EMAIL_SODF    =   "Forbidden text. Try again"  
	---CELL_EMASH_BOD   =   "Enter your Eyefind message"  
	---CELL_EMASH_BODE =   "Message too long. Try again"  
	---CELL_EMASH_BODF    =   "Forbidden message. Try again"  
	---CELL_EMASH_SOD    =   "Enter your Eyefind subject"  
	---CELL_EMASH_SODE =   "Subject too long. Try again"  
	---CELL_EMASH_SODF    =   "Forbidden Text. Try again"  
	---FMMC_KEY_TIP10   =   "Enter Synopsis"  
	---FMMC_KEY_TIP12  =   "Enter Custom Team Name"  
	---FMMC_KEY_TIP12F =   "Forbidden Text. Try again"  
	---FMMC_KEY_TIP12N  =   "Custom Team Name"  
	---FMMC_KEY_TIP8 =   "Enter Message"  
	---FMMC_KEY_TIP8F   =   "Forbidden Text. Try again"  
	---FMMC_KEY_TIP8FS  =   "Invalid Message. Try again"  
	---FMMC_KEY_TIP8S  =   "Enter Message"  
	---FMMC_KEY_TIP9    =   "Enter Outfit Name"  
	---FMMC_KEY_TIP9F   =   "Invalid Outfit Name. Try again"  
	---FMMC_KEY_TIP9N  =   "Outfit Name"  
	---PM_NAME_CHALL  =   "Enter Challenge Name"  
	DISPLAY_ONSCREEN_KEYBOARD = function(p0, windowTitle, p2, defaultText, defaultConcat1, defaultConcat2, defaultConcat3, maxInputLength) invoker.call(0x00DC833F2568DBF6, p0, windowTitle, p2, defaultText, defaultConcat1, defaultConcat2, defaultConcat3, maxInputLength) end,
	---Returns the current status of the onscreen keyboard, and updates the output.  
	---  
	---Status Codes:  
	---  
	----1: Keyboard isn't active  
	---0: User still editing  
	---1: User has finished editing  
	---2: User has canceled editing  
	UPDATE_ONSCREEN_KEYBOARD = function() return invoker.call(0x0CF2B696BBF945AE).int end,
	---Returns NULL unless UPDATE_ONSCREEN_KEYBOARD() returns 1 in the same tick.  
	GET_ONSCREEN_KEYBOARD_RESULT = function() return invoker.call(0x8362B09B91893647).str end,
	---DO NOT use this as it doesn't clean up the text input box properly and your script will get stuck in the UPDATE_ONSCREEN_KEYBOARD() loop.  
	---Use FORCE_CLOSE_TEXT_INPUT_BOX instead.  
	CANCEL_ONSCREEN_KEYBOARD = function() invoker.call(0x58A39BE597CE99CD) end,
	---p0 was always 2 in R* scripts.  
	---Called before calling DISPLAY_ONSCREEN_KEYBOARD if the input needs to be saved.  
	NEXT_ONSCREEN_KEYBOARD_RESULT_WILL_DISPLAY_USING_THESE_FONTS = function(p0) invoker.call(0x3ED1438C1F5C6612, p0) end,
	---Appears to remove stealth kill action from memory  
	ACTION_MANAGER_ENABLE_ACTION = function(hash, enable) invoker.call(0xA6A12939F16D85BE, hash, enable) end,
	---GET_GAME_TIMER() / 1000  
	GET_REAL_WORLD_TIME = function() return invoker.call(0x3F60413F5DF65748).int end,
	---  
	SUPRESS_RANDOM_EVENT_THIS_FRAME = function(eventType, suppress) invoker.call(0x1EAE0A6E978894A2, eventType, suppress) end,
	---  
	SET_EXPLOSIVE_AMMO_THIS_FRAME = function(player) invoker.call(0xA66C71C98D5F2CFB, player) end,
	---  
	SET_FIRE_AMMO_THIS_FRAME = function(player) invoker.call(0x11879CDD803D30F4, player) end,
	---  
	SET_EXPLOSIVE_MELEE_THIS_FRAME = function(player) invoker.call(0xFF1BED81BFDC0FE0, player) end,
	---  
	SET_SUPER_JUMP_THIS_FRAME = function(player) invoker.call(0x57FFF03E423A4C0B, player) end,
	---  
	SET_BEAST_JUMP_THIS_FRAME = function(player) invoker.call(0x438822C279B73B93, player) end,
	---  
	SET_FORCED_JUMP_THIS_FRAME = function(player) invoker.call(0xA1183BCFEE0F93D1, player) end,
	---  
	HAS_GAME_INSTALLED_THIS_SESSION = function() return invoker.call(0x6FDDF453C0C756EC).bool end,
	---  
	SET_TICKER_JOHNMARSTON_IS_DONE = function() invoker.call(0xFB00CA71DA386228) end,
	---  
	ARE_PROFILE_SETTINGS_VALID = function() return invoker.call(0x5AA3BEFA29F03AD4).bool end,
	---  
	PREVENT_ARREST_STATE_THIS_FRAME = function() invoker.call(0xE3D969D2785FFB5E) end,
	---Sets the localplayer playerinfo state back to playing (State 0)  
	---  
	---States are:  
	----1: "Invalid"  
	---0: "Playing"  
	---1: "Died"  
	---2: "Arrested"  
	---3: "Failed Mission"  
	---4: "Left Game"  
	---5: "Respawn"  
	---6: "In MP Cutscene"  
	FORCE_GAME_STATE_PLAYING = function() invoker.call(0xC0AA53F866B3134D) end,
	---  
	SCRIPT_RACE_INIT = function(p0, p1, p2, p3) invoker.call(0x0A60017F841A54F2, p0, p1, p2, p3) end,
	---  
	SCRIPT_RACE_SHUTDOWN = function() invoker.call(0x1FF6BF9A63E5757F) end,
	---  
	SCRIPT_RACE_PLAYER_HIT_CHECKPOINT = function(player, p1, p2, p3) invoker.call(0x1BB299305C3E8C13, player, p1, p2, p3) end,
	---  
	SCRIPT_RACE_GET_PLAYER_SPLIT_TIME = function(player, p1, p2) return invoker.call(0x8EF5573A1F801A5C, player, p1, p2).bool end,
	---  
	START_END_USER_BENCHMARK = function() invoker.call(0x92790862E36C2ADA) end,
	---  
	STOP_END_USER_BENCHMARK = function() invoker.call(0xC7DB36C24634F52B) end,
	---  
	RESET_END_USER_BENCHMARK = function() invoker.call(0x437138B6A830166A) end,
	---Saves the benchmark recording to %USERPROFILE%\Documents\Rockstar Games\GTA V\Benchmarks and submits some metrics.  
	SAVE_END_USER_BENCHMARK = function() invoker.call(0x37DEB0AA183FB6D8) end,
	---Returns true if the current frontend menu is FE_MENU_VERSION_SP_PAUSE  
	UI_STARTED_END_USER_BENCHMARK = function() return invoker.call(0xEA2F2061875EED90).bool end,
	---Returns true if the current frontend menu is FE_MENU_VERSION_LANDING_MENU  
	LANDING_SCREEN_STARTED_END_USER_BENCHMARK = function() return invoker.call(0x3BBBD13E5041A79E).bool end,
	---Returns true if command line option '-benchmark' is set.  
	IS_COMMANDLINE_END_USER_BENCHMARK = function() return invoker.call(0xA049A5BE0F04F2F8).bool end,
	---Returns value of the '-benchmarkIterations' command line option.  
	GET_BENCHMARK_ITERATIONS = function() return invoker.call(0x4750FC27570311EC).int end,
	---Returns value of the '-benchmarkPass' command line option.  
	GET_BENCHMARK_PASS = function() return invoker.call(0x1B2366C3F2A5C8DF).int end,
	---In singleplayer it does exactly what the name implies. In FiveM / GTA:Online it shows `Disconnecting from GTA Online` HUD and then quits the game.  
	RESTART_GAME = function() invoker.call(0xE574A662ACAEFBB1) end,
	---Exits the game and downloads a fresh social club update on next restart.  
	QUIT_GAME = function() invoker.call(0xEB6891F03362FB12) end,
	---Hardcoded to always return true.  
	HAS_ASYNC_INSTALL_FINISHED = function() return invoker.call(0x14832BF2ABA53FC5).bool end,
	---  
	CLEANUP_ASYNC_INSTALL = function() invoker.call(0xC79AE21974B01FB2) end,
	---aka "constrained"  
	PLM_IS_IN_CONSTRAINED_MODE = function() return invoker.call(0x684A41975F077262).bool end,
	---Returns duration of how long the game has been in power-saving mode (aka "constrained") in milliseconds.  
	PLM_GET_CONSTRAINED_DURATION_MS = function() return invoker.call(0xABB2FA71C83A1B72).int end,
	---If toggle is true, the ped's head is shown in the pause menu  
	---If toggle is false, the ped's head is not shown in the pause menu  
	SET_PLAYER_IS_IN_ANIMAL_FORM = function(toggle) invoker.call(0x4EBB7E87AA0DBED4, toggle) end,
	---Although we don't have a jenkins hash for this one, the name is 100% confirmed.  
	GET_IS_PLAYER_IN_ANIMAL_FORM = function() return invoker.call(0x9689123E3F213AA5).bool end,
	---  
	SET_PLAYER_IS_REPEATING_A_MISSION = function(toggle) invoker.call(0x9D8D44ADBBA61EF2, toggle) end,
	---Does nothing (it's a nullsub).  
	DISABLE_SCREEN_DIMMING_THIS_FRAME = function() invoker.call(0x23227DF0B2115469) end,
	---  
	GET_CITY_DENSITY = function() return invoker.call(0xD10282B6E3751BA0).float end,
	---  
	USE_ACTIVE_CAMERA_FOR_TIMESLICING_CENTRE = function() invoker.call(0x693478ACBD7F18E7) end,
	---  
	GET_SCRIPT_ROUTER_CONTEXT = function(contextData) return invoker.call(0x99BE65CCCBE09C71, contextData).bool end,
	---  
	SET_SCRIPT_ROUTER_LINK = function(contextData) return invoker.call(0x317989BB72A2EBFB, contextData).bool end,
	---  
	HAS_PENDING_SCRIPT_ROUTER_LINK = function() return invoker.call(0x776947A43CCD5328).bool end,
	---  
	CLEAR_SCRIPT_ROUTER_LINK = function() invoker.call(0xC3BCD7401198B284) end,
	---Does nothing (it's a nullsub).  
	REPORT_INVALID_SCRIPT_ROUTER_ARGUMENT = function(argument) invoker.call(0x1997BABDBA01F72C, argument) end,
	---Does nothing (it's a nullsub).  
	SET_ACTIVITY_SCRIPT_ROUTING_ENABLED = function(enabled) invoker.call(0xE8CABE94E8592520, enabled) end,
	---  
	IS_SESSION_INITIALIZED = function() return invoker.call(0x0E50FCE4525E3D72).bool end,
	---  
	GET_CHOSEN_CRIMINAL_CAREER = function() return invoker.call(0xA0A0D77ECEDD4136).int end,
	---  
	HAS_FINALIZED_CHOSEN_CRIMINAL_CAREER = function() return invoker.call(0xB233964AC562A357).bool end,
	---  
	GET_CHOSEN_MP_CHARACTER_SLOT = function() return invoker.call(0xFBEF52A5C70F324F).int end,
	---  
	RESET_CHOSEN_MP_CHARACTER_SLOT = function() invoker.call(0x54A2DDE8F751EEE5) end,
	---  
	SET_CONTENT_ID_INDEX = function(contentId, index) invoker.call(0x4B82FA6F2D624634, contentId, index) end,
	---  
	GET_CONTENT_ID_INDEX = function(contentId) return invoker.call(0xECF041186C5A94DC, contentId).int end,
	---  
	_SET_CONTENT_PROP_TYPE = function(model, type) invoker.call(0xBA4583AF4C678A9B, model, type) end,
	---Returns prop type for given model hash  
	_GET_CONTENT_PROP_TYPE = function(model) return invoker.call(0x8BAF8AD59F47AAFC, model).int end,
}
MOBILE={  
	---Creates a mobile phone of the specified type.  
	---  
	---Possible phone types:  
	---  
	---0 - Default phone / Michael's phone  
	---1 - Trevor's phone  
	---2 - Franklin's phone  
	---3 - Unused police phone  
	---4 - Prologue phone  
	---  
	---Higher values may crash your game.  
	CREATE_MOBILE_PHONE = function(phoneType) invoker.call(0xA4E8E696C532FBC7, phoneType) end,
	---Destroys the currently active mobile phone.  
	DESTROY_MOBILE_PHONE = function() invoker.call(0x3BC861DF703E5097) end,
	---The minimum/default is 500.0f. If you plan to make it bigger set it's position as well. Also this seems to need to be called in a loop as when you close the phone the scale is reset. If not in a loop you'd need to call it everytime before you re-open the phone.  
	SET_MOBILE_PHONE_SCALE = function(scale) invoker.call(0xCBDD322A73D6D932, scale) end,
	---Last parameter is unknown and always zero.  
	SET_MOBILE_PHONE_ROTATION = function(rotX, rotY, rotZ, p3) invoker.call(0xBB779C0CA917E865, rotX, rotY, rotZ, p3) end,
	---  
	GET_MOBILE_PHONE_ROTATION = function(rotation, p1) invoker.call(0x1CEFB61F193070AE, rotation, p1) end,
	---  
	SET_MOBILE_PHONE_POSITION = function(posX, posY, posZ) invoker.call(0x693A5C6D6734085B, posX, posY, posZ) end,
	---  
	GET_MOBILE_PHONE_POSITION = function(position) invoker.call(0x584FDFDA48805B86, position) end,
	---If bool Toggle = true so the mobile is hide to screen.  
	---If bool Toggle = false so the mobile is show to screen.  
	SCRIPT_IS_MOVING_MOBILE_PHONE_OFFSCREEN = function(toggle) invoker.call(0xF511F759238A5122, toggle) end,
	---This one is weird and seems to return a TRUE state regardless of whether the phone is visible on screen or tucked away.  
	---  
	---  
	---I can confirm the above. This function is hard-coded to always return 1.  
	CAN_PHONE_BE_SEEN_ON_SCREEN = function() return invoker.call(0xC4E2813898C97A4B).bool end,
	---  
	SET_MOBILE_PHONE_DOF_STATE = function(toggle) invoker.call(0x375A706A5C2FD084, toggle) end,
	---For move the finger of player, the value of int goes 1 at 5.  
	CELL_SET_INPUT = function(direction) invoker.call(0x95C9E72F3D7DEC9B, direction) end,
	---if the bool "Toggle" is "true" so the phone is lean.  
	---if the bool "Toggle" is "false" so the phone is not lean.  
	CELL_HORIZONTAL_MODE_TOGGLE = function(toggle) invoker.call(0x44E44169EF70138E, toggle) end,
	---  
	CELL_CAM_ACTIVATE = function(p0, p1) invoker.call(0xFDE8F069C542D126, p0, p1) end,
	---  
	CELL_CAM_ACTIVATE_SELFIE_MODE = function(toggle) invoker.call(0x015C49A93E3E086E, toggle) end,
	---  
	CELL_CAM_ACTIVATE_SHALLOW_DOF_MODE = function(toggle) invoker.call(0xA2CCBE62CD4C91A4, toggle) end,
	---  
	CELL_CAM_SET_SELFIE_MODE_SIDE_OFFSET_SCALING = function(p0) invoker.call(0x1B0B4AEED5B9B41C, p0) end,
	---  
	CELL_CAM_SET_SELFIE_MODE_HORZ_PAN_OFFSET = function(horizontalPan) invoker.call(0x53F4892D18EC90A4, horizontalPan) end,
	---  
	CELL_CAM_SET_SELFIE_MODE_VERT_PAN_OFFSET = function(vertPan) invoker.call(0x3117D84EFA60F77B, vertPan) end,
	---  
	CELL_CAM_SET_SELFIE_MODE_ROLL_OFFSET = function(roll) invoker.call(0x15E69E2802C24B8D, roll) end,
	---  
	CELL_CAM_SET_SELFIE_MODE_DISTANCE_SCALING = function(distanceScaling) invoker.call(0xAC2890471901861C, distanceScaling) end,
	---  
	CELL_CAM_SET_SELFIE_MODE_HEAD_YAW_OFFSET = function(yaw) invoker.call(0xD6ADE981781FCA09, yaw) end,
	---  
	CELL_CAM_SET_SELFIE_MODE_HEAD_ROLL_OFFSET = function(roll) invoker.call(0xF1E22DC13F5EEBAD, roll) end,
	---  
	CELL_CAM_SET_SELFIE_MODE_HEAD_PITCH_OFFSET = function(pitch) invoker.call(0x466DA42C89865553, pitch) end,
	---  
	CELL_CAM_IS_CHAR_VISIBLE_NO_FACE_CHECK = function(entity) return invoker.call(0x439E9BC95B7E7FBE, entity).bool end,
	---  
	GET_MOBILE_PHONE_RENDER_ID = function(renderId) invoker.call(0xB4A53E05F68B6FA1, renderId) end,
}
MONEY={
	NETWORK_INITIALIZE_CASH = function(wallet, bank) invoker.call(0x3DA5ECD1A56CBA6D, wallet, bank) end,
	---Note the 2nd parameters are always 1, 0. I have a feeling it deals with your money, wallet, bank. So when you delete the character it of course wipes the wallet cash at that time. So if that was the case, it would be eg, NETWORK_DELETE_CHARACTER(characterIndex, deleteWalletCash, deleteBankCash);  
	NETWORK_DELETE_CHARACTER = function(characterSlot, p1, p2) invoker.call(0x05A50AF38947EB8D, characterSlot, p1, p2) end,
	---  
	NETWORK_MANUAL_DELETE_CHARACTER = function(characterSlot) invoker.call(0x821418C727FCACD7, characterSlot) end,
	---  
	NETWORK_GET_PLAYER_IS_HIGH_EARNER = function() return invoker.call(0xFB2456B2040A6A67).bool end,
	---  
	NETWORK_CLEAR_CHARACTER_WALLET = function(characterSlot) invoker.call(0xA921DED15FDF28F5, characterSlot) end,
	---  
	NETWORK_GIVE_PLAYER_JOBSHARE_CASH = function(amount, gamerHandle) invoker.call(0xFB18DF9CB95E0105, amount, gamerHandle) end,
	---  
	NETWORK_RECEIVE_PLAYER_JOBSHARE_CASH = function(value, gamerHandle) invoker.call(0x56A3B51944C50598, value, gamerHandle) end,
	---  
	NETWORK_CAN_SHARE_JOB_CASH = function() return invoker.call(0x1C2473301B1C66BA).bool end,
	---index  
	----------  
	---See function sub_1005 in am_boat_taxi.ysc  
	---  
	---context  
	-------------  
	---"BACKUP_VAGOS"  
	---"BACKUP_LOST"  
	---"BACKUP_FAMILIES"  
	---"HIRE_MUGGER"  
	---"HIRE_MERCENARY"  
	---"BUY_CARDROPOFF"  
	---"HELI_PICKUP"  
	---"BOAT_PICKUP"  
	---"CLEAR_WANTED"  
	---"HEAD_2_HEAD"  
	---"CHALLENGE"  
	---"SHARE_LAST_JOB"  
	---"DEFAULT"  
	---  
	---reason  
	------------  
	---"NOTREACHTARGET"  
	---"TARGET_ESCAPE"  
	---"DELIVERY_FAIL"  
	---"NOT_USED"  
	---"TEAM_QUIT"  
	---"SERVER_ERROR"  
	---"RECEIVE_LJ_L"  
	---"CHALLENGE_PLAYER_LEFT"  
	---"DEFAULT"  
	---  
	---unk  
	--------  
	---Unknown bool value  
	---  
	---  
	NETWORK_REFUND_CASH = function(index, context, reason, p3) invoker.call(0xF9C812CD7C46E817, index, context, reason, p3) end,
	---  
	NETWORK_DEDUCT_CASH = function(amount, p1, p2, p3, p4, p5) invoker.call(0x18B7AE224B087E26, amount, p1, p2, p3, p4, p5) end,
	---  
	NETWORK_MONEY_CAN_BET = function(amount, p1, p2) return invoker.call(0x81404F3DC124FE5B, amount, p1, p2).bool end,
	---  
	NETWORK_CAN_BET = function(amount) return invoker.call(0x3A54E33660DED67F, amount).bool end,
	---GTAO_CASINO_HOUSE  
	---GTAO_CASINO_INSIDETRACK  
	---GTAO_CASINO_LUCKYWHEEL  
	---GTAO_CASINO_BLACKJACK  
	---GTAO_CASINO_ROULETTE  
	---GTAO_CASINO_SLOTS  
	---GTAO_CASINO_PURCHASE_CHIPS  
	---  
	---NETWORK_C*  
	NETWORK_CASINO_CAN_BET = function(hash) return invoker.call(0x158C16F5E4CF41F8, hash).bool end,
	---  
	NETWORK_CASINO_CAN_BET_PVC = function() return invoker.call(0x394DCDB9E836B7A9).bool end,
	---  
	NETWORK_CASINO_CAN_BET_AMOUNT = function(p0) return invoker.call(0xF62F6D9528358FE4, p0).bool end,
	---  
	NETWORK_CASINO_CAN_BUY_CHIPS_PVC = function() return invoker.call(0x8968D4D8C6C40C11).bool end,
	---  
	NETWORK_CASINO_BUY_CHIPS = function(p0, p1) return invoker.call(0x3BD101471C7F9EEC, p0, p1).bool end,
	---  
	NETWORK_CASINO_SELL_CHIPS = function(p0, p1) return invoker.call(0xED44897CB336F480, p0, p1).bool end,
	---Does nothing (it's a nullsub).  
	NETWORK_DEFER_CASH_TRANSACTIONS_UNTIL_SHOP_SAVE = function() invoker.call(0xCD0F5B5D932AE473) end,
	---  
	CAN_PAY_AMOUNT_TO_BOSS = function(p0, p1, amount, p3) return invoker.call(0x9777734DAD16992F, p0, p1, amount, p3).bool end,
	---  
	NETWORK_EARN_FROM_PICKUP = function(amount) invoker.call(0xED1517D3AF17C698, amount) end,
	---  
	NETWORK_EARN_FROM_CASHING_OUT = function(amount) invoker.call(0x718FBBF67414FA36, amount) end,
	---  
	NETWORK_EARN_FROM_GANGATTACK_PICKUP = function(amount) invoker.call(0xA03D4ACE0A3284CE, amount) end,
	---  
	NETWORK_EARN_ASSASSINATE_TARGET_KILLED = function(amount) invoker.call(0xFA700D8A9905F78A, amount) end,
	---For the money bags that drop a max of $40,000. Often called 40k bags.  
	---  
	---Most likely NETWORK_EARN_FROM_ROB***  
	NETWORK_EARN_FROM_ROB_ARMORED_CARS = function(amount) invoker.call(0xF514621E8EA463D0, amount) end,
	---  
	NETWORK_EARN_FROM_CRATE_DROP = function(amount) invoker.call(0xB1CC1B9EC3007A2A, amount) end,
	---  
	NETWORK_EARN_FROM_BETTING = function(amount, p1) invoker.call(0x827A5BA1A44ACA6D, amount, p1) end,
	---  
	NETWORK_EARN_FROM_JOB = function(amount, p1) invoker.call(0xB2CC4836834E8A98, amount, p1) end,
	---  
	NETWORK_EARN_FROM_JOBX2 = function(amount, p1) invoker.call(0xDEBBF584665411D0, amount, p1) end,
	---  
	NETWORK_EARN_FROM_PREMIUM_JOB = function(amount, p1) invoker.call(0xC8407624CEF2354B, amount, p1) end,
	---  
	NETWORK_EARN_FROM_BEND_JOB = function(amount, heistHash) invoker.call(0x61326EE6DF15B0CA, amount, heistHash) end,
	---  
	NETWORK_EARN_FROM_CHALLENGE_WIN = function(p0, p1, p2) invoker.call(0x2B171E6B2F64D8DF, p0, p1, p2) end,
	---  
	NETWORK_EARN_FROM_BOUNTY = function(amount, gamerHandle, p2, p3) invoker.call(0x131BB5DA15453ACF, amount, gamerHandle, p2, p3) end,
	---  
	NETWORK_EARN_FROM_IMPORT_EXPORT = function(amount, modelHash) invoker.call(0xF92A014A634442D6, amount, modelHash) end,
	---  
	NETWORK_EARN_FROM_HOLDUPS = function(amount) invoker.call(0x45B8154E077D9E4D, amount) end,
	---  
	NETWORK_EARN_FROM_PROPERTY = function(amount, propertyName) invoker.call(0x849648349D77F5C5, amount, propertyName) end,
	---DSPORT  
	NETWORK_EARN_FROM_AI_TARGET_KILL = function(p0, p1) invoker.call(0x515B4A22E4D3C6D7, p0, p1) end,
	---  
	NETWORK_EARN_FROM_NOT_BADSPORT = function(amount) invoker.call(0x4337511FA8221D36, amount) end,
	---  
	NETWORK_EARN_FROM_VEHICLE = function(p0, p1, p2, p3, p4, p5, p6, p7) invoker.call(0xB539BD8A4C1EECF8, p0, p1, p2, p3, p4, p5, p6, p7) end,
	---  
	NETWORK_EARN_FROM_PERSONAL_VEHICLE = function(p0, p1, p2, p3, p4, p5, p6, p7, p8) invoker.call(0x3F4D00167E41E0AD, p0, p1, p2, p3, p4, p5, p6, p7, p8) end,
	---type either Monthly,Weekly,Daily  
	NETWORK_EARN_FROM_DAILY_OBJECTIVES = function(amount, type, characterSlot) invoker.call(0x6EA318C91C1A8786, amount, type, characterSlot) end,
	---Example for p1: "AM_DISTRACT_COPS"  
	NETWORK_EARN_FROM_AMBIENT_JOB = function(p0, p1, p2) invoker.call(0xFB6DB092FBAE29E6, p0, p1, p2) end,
	---  
	NETWORK_EARN_FROM_JOB_BONUS = function(p0, p1, p2) invoker.call(0x6816FB4416760775, p0, p1, p2) end,
	---  
	NETWORK_EARN_FROM_CRIMINAL_MASTERMIND = function(p0, p1, p2) invoker.call(0xFA009A62990671D4, p0, p1, p2) end,
	---  
	NETWORK_EARN_HEIST_AWARD = function(p0, p1, p2) invoker.call(0x9D4FDBB035229669, p0, p1, p2) end,
	---  
	NETWORK_EARN_FIRST_TIME_BONUS = function(p0, p1, p2) invoker.call(0x11B0A20C493F7E36, p0, p1, p2) end,
	---  
	NETWORK_EARN_GOON = function(p0, p1, p2) invoker.call(0xCDA1C62BE2777802, p0, p1, p2) end,
	---  
	NETWORK_EARN_BOSS = function(p0, p1, p2) invoker.call(0x08B0CA7A6AB3AC32, p0, p1, p2) end,
	---  
	NETWORK_EARN_AGENCY = function(p0, p1, p2, p3) invoker.call(0x0CB1BE0633C024A8, p0, p1, p2, p3) end,
	---  
	NETWORK_EARN_FROM_WAREHOUSE = function(amount, id) invoker.call(0x3E4ADAFF1830F146, amount, id) end,
	---  
	NETWORK_EARN_FROM_CONTRABAND = function(amount, p1) invoker.call(0xECA658CE2A4E5A72, amount, p1) end,
	---  
	NETWORK_EARN_FROM_DESTROYING_CONTRABAND = function(p0, p1, p2) invoker.call(0x84C0116D012E8FC2, p0, p1, p2) end,
	---  
	NETWORK_EARN_FROM_SMUGGLER_WORK = function(p0, p1, p2, p3, p4, p5) invoker.call(0x6B7E4FB50D5F3D65, p0, p1, p2, p3, p4, p5) end,
	---  
	NETWORK_EARN_FROM_HANGAR_TRADE = function(p0, p1) invoker.call(0x31BA138F6304FB9F, p0, p1) end,
	---  
	NETWORK_EARN_PURCHASE_CLUB_HOUSE = function(p0, p1) invoker.call(0x55A1E095DB052FA5, p0, p1) end,
	---  
	NETWORK_EARN_FROM_BUSINESS_PRODUCT = function(amount, p1, p2, p3) invoker.call(0x8586789730B10CAF, amount, p1, p2, p3) end,
	---  
	NETWORK_EARN_FROM_VEHICLE_EXPORT = function(amount, p1, p2) invoker.call(0xEDEAD9A91EC768B3, amount, p1, p2) end,
	---  
	NETWORK_EARN_SMUGGLER_AGENCY = function(amount, p1, p2, p3) invoker.call(0xDEE612F2D71B0308, amount, p1, p2, p3) end,
	---  
	NETWORK_EARN_BOUNTY_HUNTER_REWARD = function(p0) invoker.call(0xF6B170F9A02E9E87, p0) end,
	---  
	NETWORK_EARN_FROM_BUSINESS_BATTLE = function(p0) invoker.call(0x42FCE14F50F27291, p0) end,
	---  
	NETWORK_EARN_FROM_CLUB_MANAGEMENT_PARTICIPATION = function(p0, p1) invoker.call(0xA75EAC69F59E96E7, p0, p1) end,
	---  
	NETWORK_EARN_FROM_FMBB_PHONECALL_MISSION = function(p0) invoker.call(0xC5156361F26E2212, p0) end,
	---  
	NETWORK_EARN_FROM_BUSINESS_HUB_SELL = function(p0, p1, p2) invoker.call(0x0B39CF0D53F1C883, p0, p1, p2) end,
	---  
	NETWORK_EARN_FROM_FMBB_BOSS_WORK = function(p0) invoker.call(0x1FDA0AA679C9919B, p0) end,
	---  
	NETWORK_EARN_FMBB_WAGE_BONUS = function(p0) invoker.call(0xFFFBA1B1F7C0B6F4, p0) end,
	---  
	NETWORK_CAN_SPEND_MONEY = function(p0, p1, p2, p3, p4, p5) return invoker.call(0xAB3CAA6B422164DA, p0, p1, p2, p3, p4, p5).bool end,
	---  
	NETWORK_CAN_SPEND_MONEY2 = function(p0, p1, p2, p3, p4, p5, p6) return invoker.call(0x7303E27CC6532080, p0, p1, p2, p3, p4, p5, p6).bool end,
	---  
	NETWORK_BUY_ITEM = function(amount, item, p2, p3, p4, item_name, p6, p7, p8, p9) invoker.call(0xF0077C797F66A355, amount, item, p2, p3, p4, item_name, p6, p7, p8, p9) end,
	---  
	NETWORK_SPENT_TAXI = function(amount, p1, p2, p3, p4) invoker.call(0x17C3A7D31EAE39F9, amount, p1, p2, p3, p4) end,
	---  
	NETWORK_PAY_EMPLOYEE_WAGE = function(p0, p1, p2) invoker.call(0x5FD5ED82CBBE9989, p0, p1, p2) end,
	---  
	NETWORK_PAY_MATCH_ENTRY_FEE = function(amount, matchId, p2, p3) invoker.call(0x9346E14F2AF74D46, amount, matchId, p2, p3) end,
	---  
	NETWORK_SPENT_BETTING = function(amount, p1, matchId, p3, p4) invoker.call(0x1C436FD11FFA692F, amount, p1, matchId, p3, p4) end,
	---  
	NETWORK_SPENT_WAGER = function(p0, p1, amount) invoker.call(0xD99DB210089617FE, p0, p1, amount) end,
	---  
	NETWORK_SPENT_IN_STRIPCLUB = function(p0, p1, p2, p3) invoker.call(0xEE99784E4467689C, p0, p1, p2, p3) end,
	---  
	NETWORK_BUY_HEALTHCARE = function(cost, p1, p2) invoker.call(0xD9B067E55253E3DD, cost, p1, p2) end,
	---p1 = 0 (always)  
	---p2 = 1 (always)  
	NETWORK_BUY_AIRSTRIKE = function(cost, p1, p2, p3) invoker.call(0x763B4BD305338F19, cost, p1, p2, p3) end,
	---  
	NETWORK_BUY_BACKUP_GANG = function(p0, p1, p2, p3, npcProvider) invoker.call(0xA3EDDAA42411D3B9, p0, p1, p2, p3, npcProvider) end,
	---p1 = 0 (always)  
	---p2 = 1 (always)  
	NETWORK_BUY_HELI_STRIKE = function(cost, p1, p2, p3) invoker.call(0x81AA4610E3FD3A69, cost, p1, p2, p3) end,
	---  
	NETWORK_SPENT_AMMO_DROP = function(p0, p1, p2, p3) invoker.call(0xB162DC95C0A3317B, p0, p1, p2, p3) end,
	---p1 is just an assumption. p2 was false and p3 was true.  
	NETWORK_BUY_BOUNTY = function(amount, victim, p2, p3, p4) invoker.call(0x7B718E197453F2D9, amount, victim, p2, p3, p4) end,
	---  
	NETWORK_BUY_PROPERTY = function(cost, propertyName, p2, p3) invoker.call(0x650A08A280870AF6, cost, propertyName, p2, p3) end,
	---  
	NETWORK_BUY_SMOKES = function(p0, p1, p2) invoker.call(0x75AF80E61248EEBD, p0, p1, p2) end,
	---  
	NETWORK_SPENT_HELI_PICKUP = function(p0, p1, p2, p3) invoker.call(0x7BF1D73DB2ECA492, p0, p1, p2, p3) end,
	---  
	NETWORK_SPENT_BOAT_PICKUP = function(p0, p1, p2, p3) invoker.call(0x524EE43A37232C00, p0, p1, p2, p3) end,
	---  
	NETWORK_SPENT_BULL_SHARK = function(p0, p1, p2, p3) invoker.call(0xA6DD8458CE24012C, p0, p1, p2, p3) end,
	---  
	NETWORK_SPENT_CASH_DROP = function(amount, p1, p2) invoker.call(0x289016EC778D60E0, amount, p1, p2) end,
	---Only used once in a script (am_contact_requests)  
	---p1 = 0  
	---p2 = 1  
	NETWORK_SPENT_HIRE_MUGGER = function(p0, p1, p2, p3) invoker.call(0xE404BFB981665BF0, p0, p1, p2, p3) end,
	---  
	NETWORK_SPENT_ROBBED_BY_MUGGER = function(amount, p1, p2, p3) invoker.call(0x995A65F15F581359, amount, p1, p2, p3) end,
	---  
	NETWORK_SPENT_HIRE_MERCENARY = function(p0, p1, p2, p3) invoker.call(0xE7B80E2BF9D80BD6, p0, p1, p2, p3) end,
	---  
	NETWORK_SPENT_BUY_WANTEDLEVEL = function(p0, p1, p2, p3, p4) invoker.call(0xE1B13771A843C4F6, p0, p1, p2, p3, p4) end,
	---  
	NETWORK_SPENT_BUY_OFFTHERADAR = function(p0, p1, p2, p3) invoker.call(0xA628A745E2275C5D, p0, p1, p2, p3) end,
	---  
	NETWORK_SPENT_BUY_REVEAL_PLAYERS = function(p0, p1, p2, p3) invoker.call(0x6E176F1B18BC0637, p0, p1, p2, p3) end,
	---  
	NETWORK_SPENT_CARWASH = function(p0, p1, p2, p3, p4) invoker.call(0xEC03C719DB2F4306, p0, p1, p2, p3, p4) end,
	---  
	NETWORK_SPENT_CINEMA = function(p0, p1, p2, p3) invoker.call(0x6B38ECB05A63A685, p0, p1, p2, p3) end,
	---  
	NETWORK_SPENT_TELESCOPE = function(p0, p1, p2) invoker.call(0x7FE61782AD94CC09, p0, p1, p2) end,
	---  
	NETWORK_SPENT_HOLDUPS = function(p0, p1, p2) invoker.call(0xD9B86B9872039763, p0, p1, p2) end,
	---  
	NETWORK_SPENT_BUY_PASSIVE_MODE = function(p0, p1, p2, p3) invoker.call(0x6D3A430D1A809179, p0, p1, p2, p3) end,
	---  
	NETWORK_SPENT_BANK_INTEREST = function(p0, p1, p2) invoker.call(0xCA230C9682556CF1, p0, p1, p2) end,
	---  
	NETWORK_SPENT_PROSTITUTES = function(p0, p1, p2) invoker.call(0xB21B89501CFAC79E, p0, p1, p2) end,
	---  
	NETWORK_SPENT_ARREST_BAIL = function(p0, p1, p2) invoker.call(0x812F5488B1B2A299, p0, p1, p2) end,
	---According to how I understood this in the freemode script alone,  
	---The first parameter is determined by a function named, func_5749 within the freemode script which has a list of all the vehicles and a set price to return which some vehicles deals with globals as well. So the first parameter is basically the set in stone insurance cost it's gonna charge you for that specific vehicle model.  
	---  
	---The second parameter whoever put it was right, they call GET_ENTITY_MODEL with the vehicle as the paremeter.  
	---  
	---The third parameter is the network handle as they call their little struct<13> func or atleast how the script decompiled it to look which in lamens terms just returns the network handle of the previous owner based on DECOR_GET_INT(vehicle, "Previous_Owner").  
	---  
	---The fourth parameter is a bool that returns true/false depending on if your bank balance is greater then 0.  
	---  
	---The fifth and last parameter is a bool that returns true/false depending on if you have the money for the car based on the cost returned by func_5749. In the freemode script eg,  
	---bool hasTheMoney = MONEY::_GET_BANK_BALANCE() < carCost.  
	NETWORK_SPENT_PAY_VEHICLE_INSURANCE_PREMIUM = function(amount, vehicleModel, gamerHandle, notBankrupt, hasTheMoney) invoker.call(0x9FF28D88C766E3E8, amount, vehicleModel, gamerHandle, notBankrupt, hasTheMoney) end,
	---  
	NETWORK_SPENT_CALL_PLAYER = function(p0, p1, p2, p3) invoker.call(0xACDE7185B374177C, p0, p1, p2, p3) end,
	---  
	NETWORK_SPENT_BOUNTY = function(p0, p1, p2) invoker.call(0x29B260B84947DFCC, p0, p1, p2) end,
	---  
	NETWORK_SPENT_FROM_ROCKSTAR = function(p0, p1, p2) invoker.call(0x6A445B64ED7ABEB5, p0, p1, p2) end,
	---Hardcoded to return 0.  
	NETWORK_SPEND_EARNED_FROM_BANK_AND_WALLETS = function(amount) return invoker.call(0x9B5016A6433A68C5, amount).int end,
	---This isn't a hash collision.  
	PROCESS_CASH_GIFT = function(p0, p1, p2) return invoker.call(0x20194D48EAEC9A41, p0, p1, p2).str end,
	---  
	NETWORK_SPENT_MOVE_SUBMARINE = function(p0, p1, p2) invoker.call(0xCD4D66B43B1DD28D, p0, p1, p2) end,
	---  
	NETWORK_SPENT_PLAYER_HEALTHCARE = function(p0, p1, p2, p3) invoker.call(0x7C99101F7FCE2EE5, p0, p1, p2, p3) end,
	---  
	NETWORK_SPENT_NO_COPS = function(p0, p1, p2, p3) invoker.call(0xD5BB406F4E04019F, p0, p1, p2, p3) end,
	---  
	NETWORK_SPENT_CARGO_SOURCING = function(p0, p1, p2, p3, p4, p5) invoker.call(0x948705F6F9C50824, p0, p1, p2, p3, p4, p5) end,
	---  
	NETWORK_SPENT_REQUEST_JOB = function(p0, p1, p2, p3) invoker.call(0x8204DA7934DF3155, p0, p1, p2, p3) end,
	---  
	NETWORK_SPENT_REQUEST_HEIST = function(p0, p1, p2, p3) invoker.call(0x9D26502BB97BFE62, p0, p1, p2, p3) end,
	---The first parameter is the amount spent which is store in a global when this native is called. The global returns 10. Which is the price for both rides.  
	---  
	---The last 3 parameters are,   
	---2,0,1 in the am_ferriswheel.c  
	---1,0,1 in the am_rollercoaster.c  
	---  
	NETWORK_BUY_FAIRGROUND_RIDE = function(amount, p1, p2, p3, p4) invoker.call(0x8A7B3952DD64D2B5, amount, p1, p2, p3, p4) end,
	---  
	NETWORK_ECONOMY_HAS_FIXED_CRAZY_NUMBERS = function() return invoker.call(0x7C4FCCD2E4DEB394).bool end,
	---  
	NETWORK_SPENT_JOB_SKIP = function(amount, matchId, p2, p3) invoker.call(0x28F174A67B8D0C2F, amount, matchId, p2, p3) end,
	---  
	NETWORK_SPENT_BOSS_GOON = function(amount, p1, p2) return invoker.call(0xFFBE02CD385356BD, amount, p1, p2).bool end,
	---  
	NETWORK_SPEND_GOON = function(p0, p1, amount) invoker.call(0x08A1B82B91900682, p0, p1, amount) end,
	---  
	NETWORK_SPEND_BOSS = function(p0, p1, p2) invoker.call(0xDBC966A01C02BCA7, p0, p1, p2) end,
	---  
	NETWORK_SPENT_MOVE_YACHT = function(amount, p1, p2) invoker.call(0xE7DF4E0545DFB56E, amount, p1, p2) end,
	---  
	NETWORK_SPENT_RENAME_ORGANIZATION = function(p0, p1, p2, p3) invoker.call(0xFC4EE00A7B3BFB76, p0, p1, p2, p3) end,
	---  
	NETWORK_BUY_CONTRABAND_MISSION = function(p0, p1, p2, p3, p4) invoker.call(0x30FD873ECE50E9F6, p0, p1, p2, p3, p4) end,
	---  
	NETWORK_SPENT_PA_SERVICE_HELI = function(p0, p1, p2, p3) invoker.call(0x112209CE0290C03A, p0, p1, p2, p3) end,
	---  
	NETWORK_SPENT_PA_SERVICE_VEHICLE = function(p0, p1, p2, p3) invoker.call(0xED5FD7AF10F5E262, p0, p1, p2, p3) end,
	---  
	NETWORK_SPENT_PA_SERVICE_SNACK = function(p0, p1, p2, p3) invoker.call(0x0D30EB83668E63C5, p0, p1, p2, p3) end,
	---  
	NETWORK_SPENT_PA_SERVICE_DANCER = function(p0, p1, p2, p3) invoker.call(0xB49ECA122467D05F, p0, p1, p2, p3) end,
	---  
	NETWORK_SPENT_PA_SERVICE_IMPOUND = function(p0, p1, p2) invoker.call(0xE23ADC6FCB1F29AE, p0, p1, p2) end,
	---  
	NETWORK_SPENT_PA_HELI_PICKUP = function(p0, p1, p2, p3) invoker.call(0x0FE8E1FCD2B86B33, p0, p1, p2, p3) end,
	---  
	NETWORK_SPENT_PURCHASE_OFFICE_PROPERTY = function(p0, p1, p2, p3, p4) invoker.call(0x69EF772B192614C1, p0, p1, p2, p3, p4) end,
	---  
	NETWORK_SPENT_UPGRADE_OFFICE_PROPERTY = function(p0, p1, p2, p3, p4) invoker.call(0x8E243837643D9583, p0, p1, p2, p3, p4) end,
	---  
	NETWORK_SPENT_PURCHASE_WAREHOUSE_PROPERTY = function(p0, p1, p2, p3) invoker.call(0xBD0EFB25CCA8F97A, p0, p1, p2, p3) end,
	---  
	NETWORK_SPENT_UPGRADE_WAREHOUSE_PROPERTY = function(p0, p1, p2, p3) invoker.call(0xA95F667A755725DA, p0, p1, p2, p3) end,
	---  
	NETWORK_SPENT_PURCHASE_IMPEXP_WAREHOUSE_PROPERTY = function(amount, data, p2, p3) invoker.call(0x33981D6804E62F49, amount, data, p2, p3) end,
	---  
	NETWORK_SPENT_UPGRADE_IMPEXP_WAREHOUSE_PROPERTY = function(p0, p1, p2, p3) invoker.call(0x4128464231E3CA0B, p0, p1, p2, p3) end,
	---  
	NETWORK_SPENT_TRADE_IMPEXP_WAREHOUSE_PROPERTY = function(p0, p1, p2, p3) invoker.call(0x2FAB6614CE22E196, p0, p1, p2, p3) end,
	---  
	NETWORK_SPENT_ORDER_WAREHOUSE_VEHICLE = function(p0, p1, p2, p3) invoker.call(0x05F04155A226FBBF, p0, p1, p2, p3) end,
	---  
	NETWORK_SPENT_ORDER_BODYGUARD_VEHICLE = function(p0, p1, p2, p3) invoker.call(0xE8B0B270B6E7C76E, p0, p1, p2, p3) end,
	---  
	NETWORK_SPENT_JUKEBOX = function(p0, p1, p2, p3) invoker.call(0x5BCDE0F640C773D2, p0, p1, p2, p3) end,
	---  
	NETWORK_SPENT_PURCHASE_CLUB_HOUSE = function(p0, p1, p2, p3) invoker.call(0x998E18CEB44487FC, p0, p1, p2, p3) end,
	---  
	NETWORK_SPENT_UPGRADE_CLUB_HOUSE = function(p0, p1, p2, p3) invoker.call(0xFA07759E6FDDD7CF, p0, p1, p2, p3) end,
	---  
	NETWORK_SPENT_PURCHASE_BUSINESS_PROPERTY = function(p0, p1, p2, p3) invoker.call(0x6FD97159FE3C971A, p0, p1, p2, p3) end,
	---  
	NETWORK_SPENT_UPGRADE_BUSINESS_PROPERTY = function(p0, p1, p2, p3) invoker.call(0x675D19C6067CAE08, p0, p1, p2, p3) end,
	---  
	NETWORK_SPENT_TRADE_BUSINESS_PROPERTY = function(p0, p1, p2, p3) invoker.call(0xA51B086B0B2C0F7A, p0, p1, p2, p3) end,
	---  
	NETWORK_SPENT_MC_ABILITY = function(p0, p1, p2, p3, p4) invoker.call(0xD7CCCBA28C4ECAF0, p0, p1, p2, p3, p4) end,
	---  
	NETWORK_SPENT_PAY_BUSINESS_SUPPLIES = function(p0, p1, p2, p3) invoker.call(0x0035BB914316F1E3, p0, p1, p2, p3) end,
	---  
	NETWORK_SPENT_CHANGE_APPEARANCE = function(p0, p1, p2) invoker.call(0x5F456788B05FAEAC, p0, p1, p2) end,
	---  
	NETWORK_SPENT_VEHICLE_EXPORT_MODS = function(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9) invoker.call(0xA75CCF58A60A5FD1, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9) end,
	---  
	NETWORK_SPENT_PURCHASE_OFFICE_GARAGE = function(p0, p1, p2, p3) invoker.call(0xB4C2EC463672474E, p0, p1, p2, p3) end,
	---  
	NETWORK_SPENT_UPGRADE_OFFICE_GARAGE = function(p0, p1, p2, p3) invoker.call(0x2AFC2D19B50797F2, p0, p1, p2, p3) end,
	---  
	NETWORK_SPENT_IMPORT_EXPORT_REPAIR = function(p0, p1, p2) invoker.call(0xC1952F3773BA18FE, p0, p1, p2) end,
	---  
	NETWORK_SPENT_PURCHASE_HANGAR = function(p0, p1, p2, p3) invoker.call(0xCCB339CC970452DA, p0, p1, p2, p3) end,
	---  
	NETWORK_SPENT_UPGRADE_HANGAR = function(p0, p1, p2, p3) invoker.call(0x615EB504B0788DAF, p0, p1, p2, p3) end,
	---  
	NETWORK_SPENT_HANGAR_UTILITY_CHARGES = function(amount, p1, p2) invoker.call(0xB18AC2ECBB15CB6A, amount, p1, p2) end,
	---  
	NETWORK_SPENT_HANGAR_STAFF_CHARGES = function(amount, p1, p2) invoker.call(0xB1F1346FD57685D7, amount, p1, p2) end,
	---  
	NETWORK_SPENT_BUY_TRUCK = function(p0, p1, p2, p3) invoker.call(0xAC272C0AE01B4BD8, p0, p1, p2, p3) end,
	---  
	NETWORK_SPENT_UPGRADE_TRUCK = function(p0, p1, p2, p3) invoker.call(0x365E877C61D6988B, p0, p1, p2, p3) end,
	---  
	NETWORK_SPENT_BUY_BUNKER = function(p0, p1, p2, p3) invoker.call(0x12D148D26538D0F9, p0, p1, p2, p3) end,
	---  
	NETWORK_SPENT_UPRADE_BUNKER = function(p0, p1, p2, p3) invoker.call(0x0C82D21A77C22D49, p0, p1, p2, p3) end,
	---  
	NETWORK_EARN_FROM_SELL_BUNKER = function(amount, bunkerHash) invoker.call(0x9251B6ABF2D0A5B4, amount, bunkerHash) end,
	---  
	NETWORK_SPENT_BALLISTIC_EQUIPMENT = function(amount, p1, p2) invoker.call(0x5D97630A8A0EF123, amount, p1, p2) end,
	---  
	NETWORK_EARN_RDR_BONUS = function(amount, p1) invoker.call(0x7A5349B773584675, amount, p1) end,
	---  
	NETWORK_EARN_WAGE_PAYMENT = function(amount, p1) invoker.call(0x35F8DA0E8A31EF1B, amount, p1) end,
	---  
	NETWORK_EARN_WAGE_PAYMENT_BONUS = function(amount) invoker.call(0x005ACA7100BD101D, amount) end,
	---  
	NETWORK_SPENT_BUY_BASE = function(p0, p1, p2, p3) invoker.call(0x4EA3F425C7744D21, p0, p1, p2, p3) end,
	---  
	NETWORK_SPENT_UPGRADE_BASE = function(p0, p1, p2, p3) invoker.call(0x3DD3F33A5D55EA6F, p0, p1, p2, p3) end,
	---  
	NETWORK_SPENT_BUY_TILTROTOR = function(p0, p1, p2, p3) invoker.call(0x0CCE73BC7A11E885, p0, p1, p2, p3) end,
	---  
	NETWORK_SPENT_UPGRADE_TILTROTOR = function(p0, p1, p2, p3) invoker.call(0x165E135D6DFA2907, p0, p1, p2, p3) end,
	---  
	NETWORK_SPENT_EMPLOY_ASSASSINS = function(p0, p1, p2, p3) invoker.call(0x5BBBD92186E1F1C5, p0, p1, p2, p3) end,
	---  
	NETWORK_SPEND_GANGOPS_CANNON = function(p0, p1, p2, p3) invoker.call(0x771ADB0E7635B7BF, p0, p1, p2, p3) end,
	---  
	NETWORK_SPEND_GANGOPS_SKIP_MISSION = function(p0, p1, p2, p3) invoker.call(0xDA947AE8880D5C18, p0, p1, p2, p3) end,
	---  
	NETWORK_SPEND_CASINO_HEIST_SKIP_MISSION = function(p0, p1, p2, p3) invoker.call(0x487009DD91D93429, p0, p1, p2, p3) end,
	---  
	NETWORK_EARN_SELL_BASE = function(amount, baseNameHash) invoker.call(0x0E1E2FF3F4EC11AA, amount, baseNameHash) end,
	---  
	NETWORK_EARN_TARGET_REFUND = function(amount, p1) invoker.call(0x5B669CF2299A271F, amount, p1) end,
	---  
	NETWORK_EARN_GANGOPS_WAGES = function(amount, p1) invoker.call(0x2DCB19ABAB0380A8, amount, p1) end,
	---  
	NETWORK_EARN_GANGOPS_WAGES_BONUS = function(amount, p1) invoker.call(0x15BB2A5C757EB91F, amount, p1) end,
	---  
	NETWORK_EARN_DAR_CHALLENGE = function(amount, p1) invoker.call(0xCAC672087B4A24AB, amount, p1) end,
	---  
	NETWORK_EARN_DOOMSDAY_FINALE_BONUS = function(amount, vehicleHash) invoker.call(0x128A747F4A230952, amount, vehicleHash) end,
	---  
	NETWORK_EARN_GANGOPS_AWARD = function(amount, p1, p2) invoker.call(0xA9A31475F530DFDA, amount, p1, p2) end,
	---  
	NETWORK_EARN_GANGOPS_ELITE = function(amount, p1, actIndex) invoker.call(0x2597A0D4A4FC2C77, amount, p1, actIndex) end,
	---  
	NETWORK_SERVICE_EARN_GANGOPS_RIVAL_DELIVERY = function(earnedMoney) invoker.call(0x1B882107C23A9022, earnedMoney) end,
	---  
	NETWORK_SPEND_GANGOPS_START_STRAND = function(type, amount, p2, p3) invoker.call(0xA19EC0786E326E06, type, amount, p2, p3) end,
	---  
	NETWORK_SPEND_GANGOPS_TRIP_SKIP = function(amount, p1, p2) invoker.call(0x5ECE6FD7B4EC8D6A, amount, p1, p2) end,
	---  
	NETWORK_EARN_GANGOPS_PREP_PARTICIPATION = function(amount) invoker.call(0xED26584F6BDCBBFD, amount) end,
	---  
	NETWORK_EARN_GANGOPS_SETUP = function(amount, p1) invoker.call(0xA9160796D47A2CF8, amount, p1) end,
	---  
	NETWORK_EARN_GANGOPS_FINALE = function(amount, p1) invoker.call(0x1C121FC9545E0D52, amount, p1) end,
	---  
	NETWORK_SPEND_GANGOPS_REPAIR_COST = function(p0, p1, p2) invoker.call(0x2A7CEC72C3443BCC, p0, p1, p2) end,
	---  
	NETWORK_EARN_NIGHTCLUB = function(p0, p1) invoker.call(0xE0F82D68C7039158, p0, p1) end,
	---  
	NETWORK_EARN_NIGHTCLUB_DANCING = function(p0) invoker.call(0xB4DEAE67F35E2ACD, p0) end,
	---  
	NETWORK_EARN_BB_EVENT_BONUS = function(amount) invoker.call(0xFDD8D2440DAF1590, amount) end,
	---  
	NETWORK_SPENT_PURCHASE_HACKER_TRUCK = function(p0, p1, p2, p3) invoker.call(0x2A93C46AAB1EACC9, p0, p1, p2, p3) end,
	---  
	NETWORK_SPENT_UPGRADE_HACKER_TRUCK = function(p0, p1, p2, p3) invoker.call(0x226C284C830D0CA8, p0, p1, p2, p3) end,
	---  
	NETWORK_EARN_HACKER_TRUCK = function(p0, amount, p2, p3) invoker.call(0xE8815FE993896AD3, p0, amount, p2, p3) end,
	---  
	NETWORK_SPENT_PURCHASE_NIGHTCLUB_AND_WAREHOUSE = function(p0, p1, p2, p3) invoker.call(0xED76D195E6E3BF7F, p0, p1, p2, p3) end,
	---  
	NETWORK_SPENT_UPGRADE_NIGHTCLUB_AND_WAREHOUSE = function(p0, p1, p2, p3) invoker.call(0x1DC9B749E7AE282B, p0, p1, p2, p3) end,
	---  
	NETWORK_EARN_NIGHTCLUB_AND_WAREHOUSE = function(p0, p1, p2, p3, p4, p5, p6) invoker.call(0xC6E74CF8C884C880, p0, p1, p2, p3, p4, p5, p6) end,
	---  
	NETWORK_SPEND_NIGHTCLUB_AND_WAREHOUSE = function(p0, p1, p2, p3) invoker.call(0x65482BFD0923C8A1, p0, p1, p2, p3) end,
	---  
	NETWORK_SPENT_RDR_HATCHET_BONUS = function(amount, p1, p2) invoker.call(0xE284D46FFDB82E36, amount, p1, p2) end,
	---  
	NETWORK_SPENT_NIGHTCLUB_ENTRY_FEE = function(player, amount, p1, p2, p3) invoker.call(0x876056684281655D, player, amount, p1, p2, p3) end,
	---  
	NETWORK_SPEND_NIGHTCLUB_BAR_DRINK = function(amount, p1, p2, p3) invoker.call(0xDD21B016E4289465, amount, p1, p2, p3) end,
	---  
	NETWORK_SPEND_BOUNTY_HUNTER_MISSION = function(amount, p1, p2) invoker.call(0x1BEA0CD93470BB1F, amount, p1, p2) end,
	---  
	NETWORK_SPENT_REHIRE_DJ = function(amount, p1, p2, p3) invoker.call(0xF6C8A544E4CF14FC, amount, p1, p2, p3) end,
	---  
	NETWORK_SPENT_ARENA_JOIN_SPECTATOR = function(amount, p1, p2, p3) invoker.call(0x14EAEA58F93B55AF, amount, p1, p2, p3) end,
	---  
	NETWORK_EARN_ARENA_SKILL_LEVEL_PROGRESSION = function(amount, p1) invoker.call(0xE08256F972C7BB2C, amount, p1) end,
	---  
	NETWORK_EARN_ARENA_CAREER_PROGRESSION = function(amount, p1) invoker.call(0x0F99F70C61F14619, amount, p1) end,
	---  
	NETWORK_SPEND_MAKE_IT_RAIN = function(amount, p1, p2) invoker.call(0xE5F5A060439C2F5D, amount, p1, p2) end,
	---  
	NETWORK_SPEND_BUY_ARENA = function(amount, p1, p2, p3) invoker.call(0x40D5DA9550B7CB46, amount, p1, p2, p3) end,
	---  
	NETWORK_SPEND_UPGRADE_ARENA = function(amount, p1, p2, p3) invoker.call(0x037ABB06825D7AB1, amount, p1, p2, p3) end,
	---type either, 1 for cam spectate, 2 for drone  
	NETWORK_SPEND_ARENA_SPECTATOR_BOX = function(amount, type, p2, p3) invoker.call(0x7049BF858601DC0F, amount, type, p2, p3) end,
	---  
	NETWORK_SPEND_SPIN_THE_WHEEL_PAYMENT = function(amount, p1, p2) invoker.call(0x9A5BD1D0000B339C, amount, p1, p2) end,
	---  
	NETWORK_EARN_SPIN_THE_WHEEL_CASH = function(amount) invoker.call(0x676C48776CACBB5A, amount) end,
	---  
	NETWORK_SPEND_ARENA_PREMIUM = function(amount, p1, p2) invoker.call(0x619496D837EFD920, amount, p1, p2) end,
	---  
	NETWORK_EARN_ARENA_WAR = function(amount, p1, p2, p3) invoker.call(0x631F1CB8FB4130AA, amount, p1, p2, p3) end,
	---  
	NETWORK_EARN_ARENA_WAR_ASSASSINATE_TARGET = function(amount) invoker.call(0x5E7AE8AABE8B7C0D, amount) end,
	---  
	NETWORK_EARN_ARENA_WAR_EVENT_CARGO = function(amount) invoker.call(0xA82959062361B259, amount) end,
	---  
	NETWORK_EARN_RC_TIME_TRIAL = function(amount) invoker.call(0xDFF49EE984E7AAE8, amount) end,
	---  
	NETWORK_EARN_DAILY_OBJECTIVE_EVENT = function(amount) invoker.call(0x5128DF14A5BB86FC, amount) end,
	---  
	NETWORK_SPEND_CASINO_MEMBERSHIP = function(amount, p1, p2, p3) invoker.call(0xFBBE0570EDF39D46, amount, p1, p2, p3) end,
	---  
	NETWORK_SPEND_BUY_CASINO = function(amount, p1, p2, data) invoker.call(0x34A6FC4D06C4DA0F, amount, p1, p2, data) end,
	---  
	NETWORK_SPEND_UPGRADE_CASINO = function(amount, p1, p2, data) invoker.call(0x4740D62BC1B4EBEA, amount, p1, p2, data) end,
	---  
	NETWORK_SPEND_CASINO_GENERIC = function(amount, p1, p2, p3, p4) invoker.call(0x88BF9B612B84D3C3, amount, p1, p2, p3, p4) end,
	---  
	NETWORK_EARN_CASINO_TIME_TRIAL_WIN = function(amount) invoker.call(0x0819DB99FD2FBBD8, amount) end,
	---  
	NETWORK_EARN_COLLECTABLES_ACTION_FIGURES = function(amount) invoker.call(0x5517F90043466049, amount) end,
	---  
	NETWORK_EARN_CASINO_COLLECTABLE_COMPLETED_COLLECTION = function(amount) invoker.call(0x83AD64F53F4E9483, amount) end,
	---  
	NETWORK_EARN_SELL_PRIZE_VEHICLE = function(amount, p1, p2) invoker.call(0x8BCB27A057DF7B7F, amount, p1, p2) end,
	---  
	NETWORK_EARN_CASINO_MISSION_REWARD = function(amount) invoker.call(0x566FD402B25787DE, amount) end,
	---  
	NETWORK_EARN_CASINO_STORY_MISSION_REWARD = function(amount) invoker.call(0xAC95ED552157E092, amount) end,
	---  
	NETWORK_EARN_CASINO_MISSION_PARTICIPATION = function(amount) invoker.call(0x09E8F18641BE2575, amount) end,
	---  
	NETWORK_EARN_CASINO_AWARD = function(amount, hash) invoker.call(0x973A9781A34F8DEB, amount, hash) end,
	---  
	NETWORK_SPEND_BUY_ARCADE = function(p0, p1, p2, p3) invoker.call(0x870289A558348378, p0, p1, p2, p3) end,
	---  
	NETWORK_SPEND_UPGRADE_ARCADE = function(p0, p1, p2, p3) invoker.call(0x5574637681911FDA, p0, p1, p2, p3) end,
	---  
	NETWORK_SPEND_CASINO_HEIST = function(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10) invoker.call(0xD30E8392F407C328, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10) end,
	---  
	NETWORK_SPEND_ARCADE_MGMT = function(p0, p1, p2, p3, p4) invoker.call(0xB5B58E24868CB09E, p0, p1, p2, p3, p4) end,
	---  
	NETWORK_SPEND_PLAY_ARCADE = function(p0, p1, p2, p3, p4) invoker.call(0xEAD3D81F2C3A1458, p0, p1, p2, p3, p4) end,
	---  
	NETWORK_SPEND_ARCADE = function(p0, p1, p2, p3, p4) invoker.call(0x43AA7FAC4E6D6687, p0, p1, p2, p3, p4) end,
	---  
	NETWORK_EARN_CASINO_HEIST = function(p0, p1, p2, p3, p4, p5, p6) invoker.call(0x72E7C7B9615FA3C3, p0, p1, p2, p3, p4, p5, p6) end,
	---  
	NETWORK_EARN_UPGRADE_ARCADE = function(p0, p1, p2) invoker.call(0x4C3B75694F7E0D9C, p0, p1, p2) end,
	---  
	NETWORK_EARN_ARCADE = function(p0, p1, p2, p3, p4, p5) invoker.call(0xD29334ED1A256DBF, p0, p1, p2, p3, p4, p5) end,
	---  
	NETWORK_EARN_COLLECTABLES = function(p0, p1, p2) invoker.call(0xA95CFB4E02390842, p0, p1, p2) end,
	---  
	NETWORK_EARN_CHALLENGE = function(amount, p1, p2) invoker.call(0x0DD362F14F18942A, amount, p1, p2) end,
	---  
	NETWORK_EARN_CASINO_HEIST_AWARDS = function(p0, p1, p2, p3, p4) invoker.call(0x3EC7471E6909798A, p0, p1, p2, p3, p4) end,
	---  
	NETWORK_EARN_COLLECTABLE_ITEM = function(amount, p1) invoker.call(0x84FF63BD4966F33D, amount, p1) end,
	---  
	NETWORK_EARN_COLLECTABLE_COMPLETED_COLLECTION = function(amount, p1) invoker.call(0x5C9B198AF5A54FA6, amount, p1) end,
	---  
	NETWORK_EARN_YATCH_MISSION = function(amount, p1) invoker.call(0xDE68E30D89F97132, amount, p1) end,
	---  
	NETWORK_EARN_DISPATCH_CALL = function(amount, p1) invoker.call(0xE2E244AB823B4483, amount, p1) end,
	---  
	NETWORK_SPEND_BEACH_PARTY = function(p0) invoker.call(0x54ABA22FA6371249, p0) end,
	---  
	NETWORK_SPEND_SUBMARINE = function(p0, p1, p2, p3, p4, p5) invoker.call(0x6C8BC1488527AAAB, p0, p1, p2, p3, p4, p5) end,
	---  
	NETWORK_SPEND_CASINO_CLUB = function(amount1, p1, p2, p3, p4, p5, p6, amount2, p8) invoker.call(0xC991C255AA6D90B2, amount1, p1, p2, p3, p4, p5, p6, amount2, p8) end,
	---  
	NETWORK_SPEND_BUY_SUB = function(p0, p1, p2, p3) invoker.call(0x90CD7C6871FBF1B4, p0, p1, p2, p3) end,
	---  
	NETWORK_SPEND_UPGRADE_SUB = function(p0, p1, p2, p3) invoker.call(0x89049A84065CE68E, p0, p1, p2, p3) end,
	---  
	NETWORK_SPEND_ISLAND_HEIST = function(p0, p1, p2, p3) invoker.call(0xE86689E5F82DE429, p0, p1, p2, p3) end,
	---  
	NETWORK_EARN_ISLAND_HEIST = function(amount1, p1, p2, p3, amount2, p5) invoker.call(0xD21D111C46BA9F15, amount1, p1, p2, p3, amount2, p5) end,
	---  
	NETWORK_EARN_BEACH_PARTY_LOST_FOUND = function(p0, p1, p2) invoker.call(0xA51338E0DCCD4065, p0, p1, p2) end,
	---  
	NETWORK_EARN_FROM_ISLAND_HEIST_DJ_MISSION = function(p0, p1) invoker.call(0xE2BB399D90942091, p0, p1) end,
	---  
	NETWORK_SPEND_CAR_CLUB_MEMBERSHIP = function(amount1, p1, p2, amount2, p4) invoker.call(0x1464E17207CD36E2, amount1, p1, p2, amount2, p4) end,
	---  
	NETWORK_SPEND_CAR_CLUB_BAR = function(p0, p1, p2, p3) invoker.call(0x925227803A0EAA1B, p0, p1, p2, p3) end,
	---  
	NETWORK_SPEND_AUTOSHOP_MODIFY = function(p0, p1, p2, p3, p4) invoker.call(0x9BEA350D7C48061B, p0, p1, p2, p3, p4) end,
	---  
	NETWORK_SPEND_CAR_CLUB_TAKEOVER = function(p0, p1, p2, p3) invoker.call(0xD1E46824E6FB92B5, p0, p1, p2, p3) end,
	---  
	NETWORK_SPEND_BUY_AUTOSHOP = function(p0, p1, p2, p3) invoker.call(0xEEB7E5D1FEB20869, p0, p1, p2, p3) end,
	---  
	NETWORK_SPEND_UPGRADE_AUTOSHOP = function(p0, p1, p2, p3) invoker.call(0xDD829AA198FDC46C, p0, p1, p2, p3) end,
	---  
	NETWORK_EARN_AUTOSHOP_BUSINESS = function(p0, p1, p2) invoker.call(0x36A7FD5A7194B03E, p0, p1, p2) end,
	---  
	NETWORK_EARN_AUTOSHOP_INCOME = function(p0, p1) invoker.call(0xC66D1CF99ED7FE25, p0, p1) end,
	---  
	NETWORK_EARN_CARCLUB_MEMBERSHIP = function(p0) invoker.call(0xBC6227792A188E2E, p0) end,
	---  
	NETWORK_EARN_DAILY_VEHICLE = function(p0, p1) invoker.call(0x533073E8A596008C, p0, p1) end,
	---  
	NETWORK_EARN_DAILY_VEHICLE_BONUS = function(p0) invoker.call(0xFE65AFE7308E32B2, p0) end,
	---  
	NETWORK_EARN_TUNER_AWARD = function(p0, p1, p2) invoker.call(0xB846F547D3792DF6, p0, p1, p2) end,
	---  
	NETWORK_EARN_TUNER_ROBBERY = function(p0, p1, p2, p3, p4) invoker.call(0xBCB266247193AC61, p0, p1, p2, p3, p4) end,
	---  
	NETWORK_EARN_UPGRADE_AUTOSHOP = function(p0, p1) invoker.call(0xC10322A8D3E061EE, p0, p1) end,
	---  
	NETWORK_SPEND_INTERACTION_MENU_ABILITY = function(p0, p1, p2, p3) invoker.call(0x93AA4165CB67E925, p0, p1, p2, p3) end,
	---  
	NETWORK_SPEND_SET_COMMON_FIELDS = function(p0, p1, p2, p3) invoker.call(0xB9F7A469460E7A4A, p0, p1, p2, p3) end,
	---  
	NETWORK_SPEND_SET_DISCOUNT = function(p0) invoker.call(0x7E2F4E8F44CAF4E0, p0) end,
	---  
	NETWORK_SPEND_BUY_AGENCY = function(p0, p1, p2, p3) invoker.call(0xEA8CD3C9B3C35884, p0, p1, p2, p3) end,
	---  
	NETWORK_SPEND_UPGRADE_AGENCY = function(p0, p1, p2, p3) invoker.call(0x6CCA64840589A3B6, p0, p1, p2, p3) end,
	---  
	NETWORK_SPEND_AGENCY = function(p0, p1, p2, p3, p4) invoker.call(0x1B2120405080125C, p0, p1, p2, p3, p4) end,
	---  
	NETWORK_SPEND_HIDDEN = function(p0, p1, p2, p3) invoker.call(0xBF8793B91EA094A7, p0, p1, p2, p3) end,
	---  
	NETWORK_SPEND_SOURCE_BIKE = function(p0, p1, p2, p3) invoker.call(0xD9DF467CBE4398C8, p0, p1, p2, p3) end,
	---  
	NETWORK_SPEND_COMP_SUV = function(p0, p1, p2, p3) invoker.call(0xD86581F9E7CDA383, p0, p1, p2, p3) end,
	---  
	NETWORK_SPEND_SUV_FST_TRVL = function(p0, p1, p2, p3) invoker.call(0x61A2DF64ED2D396E, p0, p1, p2, p3) end,
	---  
	NETWORK_SPEND_SUPPLY = function(p0, p1, p2, p3) invoker.call(0xEBD482B82ACB8BAD, p0, p1, p2, p3) end,
	---  
	NETWORK_SPEND_BIKE_SHOP = function(p0, p1, p2, p3) invoker.call(0x923AEA8E78F8DF0B, p0, p1, p2, p3) end,
	---  
	NETWORK_SPEND_VEHICLE_REQUESTED = function(p0, p1, p2, p3, p4) invoker.call(0x02D24A35A9CC3503, p0, p1, p2, p3, p4) end,
	---  
	NETWORK_SPEND_GUNRUNNING = function(p0, p1, p2, p3) invoker.call(0x2CEB0E0BC2A77C05, p0, p1, p2, p3) end,
	---  
	NETWORK_EARN_AGENCY_SAFE = function(p0, p1) invoker.call(0x663B4B9D11742A12, p0, p1) end,
	---  
	NETWORK_EARN_AWARD_CONTRACT = function(p0, p1) invoker.call(0x146D4EB6D22A403F, p0, p1) end,
	---  
	NETWORK_EARN_AGENCY_CONTRACT = function(p0, p1) invoker.call(0x38482AD49CB905C7, p0, p1) end,
	---  
	NETWORK_EARN_AWARD_PHONE = function(p0, p1) invoker.call(0x7397A115030F1BE3, p0, p1) end,
	---  
	NETWORK_EARN_AGENCY_PHONE = function(p0, p1, p2) invoker.call(0xE29F3D5FA63B1B82, p0, p1, p2) end,
	---  
	NETWORK_EARN_AWARD_FIXER_MISSION = function(p0, p1) invoker.call(0x88D6C327D6C57C45, p0, p1) end,
	---  
	NETWORK_EARN_FIXER_PREP = function(p0, p1) invoker.call(0x6283E5DE4C4460C6, p0, p1) end,
	---  
	NETWORK_EARN_FIXER_FINALE = function(p0, p1) invoker.call(0xBA154373C5FE51E8, p0, p1) end,
	---  
	NETWORK_EARN_FIXER_AGENCY_SHORT_TRIP = function(p0, p1) invoker.call(0xF4A8E57460BF2037, p0, p1) end,
	---  
	NETWORK_EARN_AWARD_SHORT_TRIP = function(p0, p1) invoker.call(0x5B4DBDED84D6A420, p0, p1) end,
	---  
	NETWORK_EARN_FIXER_RIVAL_DELIVERY = function(p0, p1) invoker.call(0x235D41210B3A1A5E, p0, p1) end,
	---  
	NETWORK_EARN_UPGRADE_AGENCY = function(p0, p1) invoker.call(0xD07C7C3F1995108C, p0, p1) end,
	---  
	NETWORK_SPEND_APARTMENT_UTILITIES = function(amount, p1, p2, data) invoker.call(0x1254B5B3925EFD3D, amount, p1, p2, data) end,
	---  
	NETWORK_SPEND_BUSINESS_PROPERTY_FEES = function(p0, p1, p2, p3) invoker.call(0x92D1CFDA1227FF1C, p0, p1, p2, p3) end,
	---  
	NETWORK_EARN_SIGHTSEEING_REWARD = function(p0, p1, p2, p3) invoker.call(0x45087AE480B233AC, p0, p1, p2, p3) end,
	---  
	NETWORK_EARN_BIKER_SHOP = function(p0, p1) invoker.call(0x2C5809EB9DF57257, p0, p1) end,
	---  
	NETWORK_EARN_BIKER = function(p0) invoker.call(0x71BEC32FA466E105, p0) end,
	---  
	NETWORK_YOHAN_SOURCE_GOODS = function(p0, p1, p2, p3) invoker.call(0x59498BC8B1C8B15C, p0, p1, p2, p3) end,
	---  
	_NETWORK_SPEND_BUY_MFGARAGE = function(p0, p1, p2, p3) invoker.call(0xA2ED36DCF0FCA413, p0, p1, p2, p3) end,
	---  
	_NETWORK_SPEND_UPGRADE_MFGARAGE = function(p0, p1, p2, p3) invoker.call(0xCF8F346DDDC66643, p0, p1, p2, p3) end,
	---  
	_NETWORK_SPEND_BUY_SUPPLIES = function(p0, p1, p2, p3) invoker.call(0xB48185C0CA67B16B, p0, p1, p2, p3) end,
	---  
	_NETWORK_SPEND_BUY_ACID_LAB = function(p0, p1, p2, p3) invoker.call(0xF1E26A7924327152, p0, p1, p2, p3) end,
	---  
	_NETWORK_SPEND_UPGRADE_ACID_LAB_EQUIPMENT = function(p0, p1, p2, p3) invoker.call(0x110EE9D486C23126, p0, p1, p2, p3) end,
	---  
	_NETWORK_SPEND_UPGRADE_ACID_LAB_ARMOR = function(p0, p1, p2, p3) invoker.call(0xA7D541C9ACD63133, p0, p1, p2, p3) end,
	---  
	_NETWORK_SPEND_UPGRADE_ACID_LAB_SCOOP = function(p0, p1, p2, p3) invoker.call(0x2940558E05BCC2EC, p0, p1, p2, p3) end,
	---  
	_NETWORK_SPEND_UPGRADE_ACID_LAB_MINES = function(p0, p1, p2, p3) invoker.call(0x4B99AB08C92C54E4, p0, p1, p2, p3) end,
	---  
	_NETWORK_SPEND_RENAME_ACID_LAB = function(p0, p1, p2, p3) invoker.call(0x842B1C5AF61ACDE9, p0, p1, p2, p3) end,
	---  
	_NETWORK_SPEND_RENAME_ACID_PRODUCT = function(p0, p1, p2, p3) invoker.call(0x446798F7495DD7D8, p0, p1, p2, p3) end,
	---  
	_NETWORK_EARN_AWARD_JUGGALO_MISSION = function(p0, p1) invoker.call(0xDDF047577F1A02A7, p0, p1) end,
	---  
	_NETWORK_EARN_AWARD_ACID_LAB = function(p0, p1) invoker.call(0xD1A8165767AD2D23, p0, p1) end,
	---  
	_NETWORK_EARN_AWARD_DAILY_STASH = function(p0, p1) invoker.call(0xC30650FA74A19D02, p0, p1) end,
	---  
	_NETWORK_EARN_AWARD_DEAD_DROP = function(p0, p1) invoker.call(0xD01EBAEA1F905EF6, p0, p1) end,
	---  
	_NETWORK_EARN_AWARD_RANDOM_EVENT = function(p0, p1) invoker.call(0xBEAFBB1B98B7EF55, p0, p1) end,
	---  
	_NETWORK_EARN_AWARD_TAXI = function(p0, p1) invoker.call(0xA914768AD35CD3A5, p0, p1) end,
	---  
	_NETWORK_EARN_STREET_DEALER = function(p0, p1) invoker.call(0xA81017EE1324FDFE, p0, p1) end,
	---  
	_NETWORK_EARN_SELL_ACID = function(p0, p1) invoker.call(0x79B656937DF6DF5D, p0, p1) end,
	---  
	_NETWORK_EARN_SETUP_PARTICIPATION_ACID_LAB = function(p0, p1) invoker.call(0xE3942D59E8A7F70D, p0, p1) end,
	---  
	_NETWORK_EARN_SOURCE_PARTICIPATION_ACID_LAB = function(p0, p1) invoker.call(0x136F11B5DF1B304D, p0, p1) end,
	---  
	_NETWORK_EARN_SELL_PARTICIPATION_ACID_LAB = function(p0, p1) invoker.call(0xCA3EF9B09A8D76B4, p0, p1) end,
	---  
	_NETWORK_EARN_JUGGALO_STORY_MISSION = function(p0, p1) invoker.call(0xE01D10BA8CD53621, p0, p1) end,
	---  
	_NETWORK_EARN_JUGGALO_STORY_MISSION_PARTICIPATION = function(p0, p1) invoker.call(0x40FF6CCCC476185C, p0, p1) end,
	---JUGGALO_PHONE_MISSION...  
	_NETWORK_EARN_FOOLIGAN_JOB = function(p0, p1) invoker.call(0xCE4452AE85F5E252, p0, p1) end,
	---JUGGALO_PHONE_MISSION_PARTICIPATION...  
	_NETWORK_EARN_FOOLIGAN_JOB_PARTICIPATION = function(p0, p1) invoker.call(0xC376B92D0E060970, p0, p1) end,
	---  
	_NETWORK_EARN_TAXI_JOB = function(p0, p1) invoker.call(0x991E1588FAD9019D, p0, p1) end,
	---  
	_NETWORK_EARN_DAILY_STASH_HOUSE_COMPLETED = function(p0, p1) invoker.call(0xCABC9874AFA70D6D, p0, p1) end,
	---  
	_NETWORK_EARN_DAILY_STASH_HOUSE_PARTICIPATION = function(p0, p1) invoker.call(0x9C0C6BD0F94CE391, p0, p1) end,
	---Used for SERVICE_EARN_AVENGER_OPERATIONS & SERVICE_EARN_AVENGER_OPS_BONUS  
	_NETWORK_EARN_AVENGER = function(amount, p1) invoker.call(0x55F006B9D4A46C1D, amount, p1) end,
	---  
	_NETWORK_EARN_SMUGGLER_OPS = function(p0, p1, p2) invoker.call(0xDEA273D5F8A9661A, p0, p1, p2) end,
	---  
	_NETWORK_EARN_BONUS_OBJECTIVE = function(amount, p1, p2) invoker.call(0xDCEF983C24191997, amount, p1, p2) end,
	---  
	_NETWORK_EARN_PROGRESS_HUB = function(p0, p1) invoker.call(0xF8332B06F0EECC9C, p0, p1) end,
	---  
	_NETWORK_SPENT_AIR_FREIGHT = function(hangarCargoSourcingPrice, fromBank, fromBankAndWallet, cost, warehouseId, warehouseSlot) invoker.call(0x8C7E8D6F96C9E948, hangarCargoSourcingPrice, fromBank, fromBankAndWallet, cost, warehouseId, warehouseSlot) end,
	---  
	_NETWORK_SPENT_SKIP_CARGO_SOURCE_SETUP = function(amount, fromBank, fromBankAndWallet, cost) invoker.call(0xED1B407BADA42CEC, amount, fromBank, fromBankAndWallet, cost) end,
	---Hash p3 = STEALTH_MODULE  
	_NETWORK_SPENT_STEALTH_MODULE = function(amount, fromBank, fromBankAndWallet, p3) invoker.call(0x95CE79A6939C537A, amount, fromBank, fromBankAndWallet, p3) end,
	---Hash p3 = MISSILE_JAMMER  
	_NETWORK_SPENT_MISSILE_JAMMER = function(amount, fromBank, fromBankAndWallet, p3) invoker.call(0xD687100F616163F4, amount, fromBank, fromBankAndWallet, p3) end,
	---  
	_NETWORK_SPENT_GENERIC = function(price, p1, p2, stat, spent, p5, p6, data) invoker.call(0x2803B027479FB640, price, p1, p2, stat, spent, p5, p6, data) end,
	---_NETWORK_EARN_G*  
	_NETWORK_EARN_GENERIC = function(amount, earn, p2, p3, data) invoker.call(0xBF7B5BB7ED890380, amount, earn, p2, p3, data) end,
	---  
	_NETWORK_CLEAR_TRANSACTION_TELEMETRY_NONCE = function() invoker.call(0xE03B9F95556E48E9) end,
	---  
	NETWORK_GET_VC_BANK_BALANCE = function() return invoker.call(0x76EF28DA05EA395A).int end,
	---  
	NETWORK_GET_VC_WALLET_BALANCE = function(characterSlot) return invoker.call(0xA40F9C2623F6A8B5, characterSlot).int end,
	---  
	NETWORK_GET_VC_BALANCE = function() return invoker.call(0x5CBAD97E059E1B94).int end,
	---  
	NETWORK_GET_EVC_BALANCE = function() return invoker.call(0x5D1E75F91C07DEE5).int end,
	---  
	NETWORK_GET_PVC_BALANCE = function() return invoker.call(0x4F54F3B6C202FB4E).int end,
	---  
	NETWORK_GET_STRING_WALLET_BALANCE = function(characterSlot) return invoker.call(0xF9B10B529DCFB33B, characterSlot).str end,
	---  
	NETWORK_GET_STRING_BANK_BALANCE = function() return invoker.call(0xA6FA3979BED01B81).str end,
	---  
	NETWORK_GET_STRING_BANK_WALLET_BALANCE = function(character) return invoker.call(0x700AF71AE615E6DD, character).str end,
	---Returns true if wallet balance >= amount.  
	NETWORK_GET_CAN_SPEND_FROM_WALLET = function(amount, characterSlot) return invoker.call(0xED5AB8860415BABA, amount, characterSlot).bool end,
	---Returns true if bank balance >= amount.  
	NETWORK_GET_CAN_SPEND_FROM_BANK = function(amount) return invoker.call(0xA31FD6A0865B6D14, amount).bool end,
	---Returns true if bank balance + wallet balance >= amount.  
	NETWORK_GET_CAN_SPEND_FROM_BANK_AND_WALLET = function(amount, characterSlot) return invoker.call(0xDC18531D7019A535, amount, characterSlot).bool end,
	---Retturns the same value as NETWORK_GET_REMAINING_TRANSFER_BALANCE.  
	NETWORK_GET_PVC_TRANSFER_BALANCE = function() return invoker.call(0x13A8DE2FD77D04F3).int end,
	---Returns false if amount > wallet balance or daily transfer limit has been hit.  
	NETWORK_GET_CAN_TRANSFER_CASH = function(amount) return invoker.call(0x08E8EEADFD0DC4A0, amount).bool end,
	---  
	NETWORK_CAN_RECEIVE_PLAYER_CASH = function(p0, p1, p2, p3) return invoker.call(0x5D17BE59D2123284, p0, p1, p2, p3).bool end,
	---Returns the same value as NETWORK_GET_PVC_TRANSFER_BALANCE.  
	NETWORK_GET_REMAINING_TRANSFER_BALANCE = function() return invoker.call(0xEA560AC9EEB1E19B).int end,
	---Does nothing and always returns 0.  
	WITHDRAW_VC = function(amount) return invoker.call(0xF70EFA14FE091429, amount).int end,
	---Does nothing and always returns false.  
	DEPOSIT_VC = function(amount) return invoker.call(0xE260E0BB9CD995AC, amount).bool end,
	---This function is hard-coded to always return 1.  
	HAS_VC_WITHDRAWAL_COMPLETED = function(p0) return invoker.call(0xE154B48B68EF72BC, p0).bool end,
	---This function is hard-coded to always return 1.  
	WAS_VC_WITHDRAWAL_SUCCESSFUL = function(p0) return invoker.call(0x6FCF8DDEA146C45B, p0).bool end,
	---  
	NETWORK_GET_MP_WINDFALL_AVAILABLE = function() return invoker.call(0xA6E586C3BD772B7B).bool end,
}
NETSHOPPING={  
	NET_GAMESERVER_USE_SERVER_TRANSACTIONS = function() return invoker.call(0x7D2708796355B20B).bool end,
	---  
	NET_GAMESERVER_CATALOG_ITEM_IS_VALID = function(name) return invoker.call(0xBD4D7EAF8A30F637, name).bool end,
	---  
	NET_GAMESERVER_CATALOG_ITEM_KEY_IS_VALID = function(hash) return invoker.call(0x247F0F73A182EA0B, hash).bool end,
	---bool is always true in game scripts  
	NET_GAMESERVER_GET_PRICE = function(itemHash, categoryHash, p2) return invoker.call(0xC27009422FCCA88D, itemHash, categoryHash, p2).int end,
	---  
	NET_GAMESERVER_CATALOG_IS_VALID = function() return invoker.call(0x3C4487461E9B0DCB).bool end,
	---  
	NET_GAMESERVER_IS_CATALOG_CURRENT = function() return invoker.call(0x2B949A1E6AEC8F6A).bool end,
	---  
	NET_GAMESERVER_GET_CATALOG_CLOUD_CRC = function() return invoker.call(0x85F6C9ABA1DE2BCF).int end,
	---  
	NET_GAMESERVER_REFRESH_SERVER_CATALOG = function() return invoker.call(0x357B152EF96C30B6).bool end,
	---  
	NET_GAMESERVER_RETRIEVE_CATALOG_REFRESH_STATUS = function(state) return invoker.call(0xCF38DAFBB49EDE5E, state).bool end,
	---  
	NET_GAMESERVER_INIT_SESSION = function() return invoker.call(0xE3E5A7C64CA2C6ED).bool end,
	---  
	NET_GAMESERVER_RETRIEVE_INIT_SESSION_STATUS = function(p0) return invoker.call(0x0395CB47B022E62C, p0).bool end,
	---  
	NET_GAMESERVER_START_SESSION = function(charSlot) return invoker.call(0xA135AC892A58FC07, charSlot).bool end,
	---  
	NET_GAMESERVER_START_SESSION_PENDING = function() return invoker.call(0x72EB7BA9B69BF6AB).bool end,
	---  
	NET_GAMESERVER_RETRIEVE_START_SESSION_STATUS = function(p0) return invoker.call(0x170910093218C8B9, p0).bool end,
	---  
	NET_GAMESERVER_RETRIEVE_SESSION_ERROR_CODE = function(p0) return invoker.call(0xC13C38E47EA5DF31, p0).bool end,
	---  
	NET_GAMESERVER_IS_SESSION_VALID = function(charSlot) return invoker.call(0xB24F0944DA203D9E, charSlot).bool end,
	---  
	NET_GAMESERVER_CLEAR_SESSION = function(p0) return invoker.call(0x74A0FD0688F1EE45, p0).bool end,
	---  
	NET_GAMESERVER_SESSION_APPLY_RECEIVED_DATA = function(charSlot) return invoker.call(0x2F41D51BA3BCD1F1, charSlot).bool end,
	---  
	NET_GAMESERVER_IS_SESSION_REFRESH_PENDING = function() return invoker.call(0x810E8431C0614BF9).bool end,
	---Instructs the transaction session manager to perform a session restart as soon as possible.  
	---This is different from NET_GAMESERVER_START_SESSION_RESTART which, despite its name, does not actually restart the session (it only requests fresh inventory and/or balance data from the server).  
	---Returns true if it was possible to set the flag.  
	_NET_GAMESERVER_FLAG_FOR_SESSION_RESTART = function() return invoker.call(0x2D3A836D29A50D88).bool end,
	---Note: only one of the arguments can be set to true at a time  
	NET_GAMESERVER_START_SESSION_RESTART = function(inventory, playerbalance) return invoker.call(0x35A1B3E1D1315CFA, inventory, playerbalance).bool end,
	---  
	NET_GAMESERVER_TRANSACTION_IN_PROGRESS = function() return invoker.call(0x613F125BA3BD2EB9).bool end,
	---  
	NET_GAMESERVER_GET_SESSION_STATE_AND_STATUS = function(p0, p1) return invoker.call(0x897433D292B44130, p0, p1).bool end,
	---  
	NET_GAMESERVER_BASKET_START = function(transactionId, categoryHash, actionHash, flags) return invoker.call(0x279F08B1A4B29B7E, transactionId, categoryHash, actionHash, flags).bool end,
	---  
	NET_GAMESERVER_BASKET_END = function() return invoker.call(0xFA336E7F40C0A0D0).bool end,
	---  
	NET_GAMESERVER_BASKET_IS_ACTIVE = function() return invoker.call(0xA65568121DF2EA26).bool end,
	---  
	NET_GAMESERVER_BASKET_ADD_ITEM = function(itemData, quantity) return invoker.call(0xF30980718C8ED876, itemData, quantity).bool end,
	---  
	NET_GAMESERVER_BASKET_IS_FULL = function() return invoker.call(0x27F76CC6C55AD30E).bool end,
	---  
	NET_GAMESERVER_BASKET_APPLY_SERVER_DATA = function(p0, p1) return invoker.call(0xE1A0450ED46A7812, p0, p1).bool end,
	---  
	NET_GAMESERVER_CHECKOUT_START = function(transactionId) return invoker.call(0x39BE7CEA8D9CC8E6, transactionId).bool end,
	---  
	NET_GAMESERVER_CHECKOUT_PENDING = function(transactionId) return invoker.call(0x4B64CD6D18474126, transactionId).bool end,
	---  
	NET_GAMESERVER_BEGIN_SERVICE = function(transactionId, categoryHash, itemHash, actionTypeHash, value, flags) return invoker.call(0x3C5FD37B5499582E, transactionId, categoryHash, itemHash, actionTypeHash, value, flags).bool end,
	---  
	NET_GAMESERVER_END_SERVICE = function(transactionId) return invoker.call(0xE2A99A9B524BEFFF, transactionId).bool end,
	---  
	NET_GAMESERVER_DELETE_CHARACTER = function(slot, transfer, reason) return invoker.call(0x51F1A8E48C3D2F6D, slot, transfer, reason).bool end,
	---  
	NET_GAMESERVER_DELETE_CHARACTER_GET_STATUS = function() return invoker.call(0x0A6D923DFFC9BD89).int end,
	---  
	NET_GAMESERVER_DELETE_SET_TELEMETRY_NONCE_SEED = function() return invoker.call(0x112CEF1615A1139F).bool end,
	---  
	NET_GAMESERVER_TRANSFER_BANK_TO_WALLET = function(charSlot, amount) return invoker.call(0xD47A2C1BA117471D, charSlot, amount).bool end,
	---  
	NET_GAMESERVER_TRANSFER_WALLET_TO_BANK = function(charSlot, amount) return invoker.call(0xC2F7FE5309181C7D, charSlot, amount).bool end,
	---Same as 0x350AA5EBC03D3BD2  
	NET_GAMESERVER_TRANSFER_BANK_TO_WALLET_GET_STATUS = function() return invoker.call(0x23789E777D14CE44).int end,
	---Same as 0x23789E777D14CE44  
	NET_GAMESERVER_TRANSFER_WALLET_TO_BANK_GET_STATUS = function() return invoker.call(0x350AA5EBC03D3BD2).int end,
	---Used to be NETWORK_SHOP_CASH_TRANSFER_SET_TELEMETRY_NONCE_SEED  
	NET_GAMESERVER_TRANSFER_CASH_SET_TELEMETRY_NONCE_SEED = function() return invoker.call(0x498C1E05CE5F7877).bool end,
	---  
	NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED = function(p0) return invoker.call(0x9507D4271988E1AE, p0).bool end,
}
NETWORK={
	---Online version is defined here: update\update.rpf\common\data\version.txt  
	---  
	---Example:  
	---  
	---[ONLINE_VERSION_NUMBER]  
	---1.33  
	---  
	---_GET_ONLINE_VERSION() will return "1.33"  
	GET_ONLINE_VERSION = function() return invoker.call(0xFCA9373EF340AC0A).str end,
	---Returns whether the player is signed into Social Club.  
	NETWORK_IS_SIGNED_IN = function() return invoker.call(0x054354A99211EB96).bool end,
	---Returns whether the game is not in offline mode.  
	---  
	---seemed not to work for some ppl  
	NETWORK_IS_SIGNED_ONLINE = function() return invoker.call(0x1077788E268557C2).bool end,
	---This function is hard-coded to always return 1.  
	NETWORK_IS_NP_AVAILABLE = function() return invoker.call(0xBD545D44CCE70597).bool end,
	---This function is hard-coded to always return 1.  
	NETWORK_IS_NP_PENDING = function() return invoker.call(0xEBCAB9E5048434F4).bool end,
	---Hardcoded to return zero.  
	---  
	---==== PS4 specific info ====  
	---  
	---Returns some sort of unavailable reason:  
	----1 = REASON_INVALID  
	--- 0 = REASON_OTHER  
	--- 1 = REASON_SYSTEM_UPDATE  
	--- 2 = REASON_GAME_UPDATE  
	--- 3 = REASON_SIGNED_OUT  
	--- 4 = REASON_AGE  
	--- 5 = REASON_CONNECTION  
	---  
	---=================================  
	NETWORK_GET_NP_UNAVAILABLE_REASON = function() return invoker.call(0x74FB3E29E6D10FA9).int end,
	---This function is hard-coded to always return 1.  
	NETWORK_IS_CONNETED_TO_NP_PRESENCE = function() return invoker.call(0x7808619F31FF22DB).bool end,
	---This function is hard-coded to always return 0.  
	NETWORK_IS_LOGGED_IN_TO_PSN = function() return invoker.call(0xA0FA4EC6A05DA44E).bool end,
	---Returns whether the signed-in user has valid Rockstar Online Services (ROS) credentials.  
	NETWORK_HAS_VALID_ROS_CREDENTIALS = function() return invoker.call(0x85443FF4C328F53B).bool end,
	---  
	NETWORK_IS_REFRESHING_ROS_CREDENTIALS = function() return invoker.call(0x8D11E61A4ABF49CC).bool end,
	---  
	NETWORK_IS_CLOUD_AVAILABLE = function() return invoker.call(0x9A4CF4F48AD77302).bool end,
	---  
	NETWORK_HAS_SOCIAL_CLUB_ACCOUNT = function() return invoker.call(0x67A5589628E0CFF6).bool end,
	---  
	NETWORK_ARE_SOCIAL_CLUB_POLICIES_CURRENT = function() return invoker.call(0xBA9775570DB788CF).bool end,
	---If you are host, returns true else returns false.  
	NETWORK_IS_HOST = function() return invoker.call(0x8DB296B814EDDA07).bool end,
	---  
	NETWORK_GET_HOST_PLAYER_INDEX = function() return invoker.call(0x8251FB94DC4FDFC8).int end,
	---  
	NETWORK_WAS_GAME_SUSPENDED = function() return invoker.call(0x4237E822315D8BA9).bool end,
	---  
	NETWORK_HAVE_ONLINE_PRIVILEGES = function() return invoker.call(0x25CB5A9F37BFD063).bool end,
	---For the XboxPC version this returns true if XPRIVILEGE_MULTIPLAYER_SESSIONS is granted but XPRIVILEGE_CROSS_PLAY is NOT granted.  
	---For more information, see https://learn.microsoft.com/en-us/gaming/gdk/_content/gc/live/features/identity/privileges/concepts/live-user-privileges-client#privilege-ids-to-check  
	---  
	---Always returns false for non-XboxPC versions.  
	_NETWORK_MULTIPLAYER_CROSSPLAY_NOT_ALLOWED = function() return invoker.call(0xA6BC0D9BCF9662FA).bool end,
	---  
	NETWORK_HAS_AGE_RESTRICTIONS = function() return invoker.call(0x1353F87E89946207).bool end,
	---  
	NETWORK_HAVE_USER_CONTENT_PRIVILEGES = function(p0) return invoker.call(0x72D918C99BCACC54, p0).bool end,
	---  
	NETWORK_HAVE_COMMUNICATION_PRIVILEGES = function(p0, player) return invoker.call(0xAEEF48CDF5B6CE7C, p0, player).bool end,
	---Appears to be PlayStation-specific. Always returns true on other platforms if signed in with the primary user profile  
	_NETWORK_HAVE_PLATFORM_COMMUNICATION_PRIVILEGES = function() return invoker.call(0xE1E02509169C124E).bool end,
	---  
	NETWORK_CHECK_ONLINE_PRIVILEGES = function(p0, p1) return invoker.call(0x78321BEA235FD8CD, p0, p1).bool end,
	---  
	NETWORK_CHECK_USER_CONTENT_PRIVILEGES = function(p0, p1, p2) return invoker.call(0x595F028698072DD9, p0, p1, p2).bool end,
	---  
	NETWORK_CHECK_COMMUNICATION_PRIVILEGES = function(p0, p1, p2) return invoker.call(0x83F28CE49FBBFFBA, p0, p1, p2).bool end,
	---  
	NETWORK_CHECK_TEXT_COMMUNICATION_PRIVILEGES = function(p0, p1, p2) return invoker.call(0x07EAB372C8841D99, p0, p1, p2).bool end,
	---  
	NETWORK_IS_USING_ONLINE_PROMOTION = function() return invoker.call(0x906CA41A4B74ECA4).bool end,
	---  
	NETWORK_SHOULD_SHOW_PROMOTION_ALERT_SCREEN = function() return invoker.call(0x023ACAB2DC9DC4A4).bool end,
	---  
	NETWORK_HAS_SOCIAL_NETWORKING_SHARING_PRIV = function() return invoker.call(0x76BF03FADBF154F5).bool end,
	---  
	NETWORK_GET_AGE_GROUP = function() return invoker.call(0x9614B71F8ADB982B).int end,
	---  
	NETWORK_CHECK_PRIVILEGES = function(p0, p1, p2) return invoker.call(0x0CF6CC51AA18F0F8, p0, p1, p2).bool end,
	---Hardcoded to return false.  
	NETWORK_IS_PRIVILEGE_CHECK_IN_PROGRESS = function() return invoker.call(0x64E5C4CC82847B73).bool end,
	---  
	NETWORK_SET_PRIVILEGE_CHECK_RESULT_NOT_NEEDED = function() invoker.call(0x1F7BC3539F9E0224) end,
	---Hardcoded to return true.  
	NETWORK_RESOLVE_PRIVILEGE_USER_CONTENT = function() return invoker.call(0xDE9225854F37BF72).bool end,
	---  
	NETWORK_HAVE_PLATFORM_SUBSCRIPTION = function() return invoker.call(0x5EA784D197556507).bool end,
	---  
	NETWORK_IS_PLATFORM_SUBSCRIPTION_CHECK_PENDING = function() return invoker.call(0xA8ACB6459542A8C8).bool end,
	---  
	NETWORK_SHOW_ACCOUNT_UPGRADE_UI = function() invoker.call(0x83FE8D7229593017) end,
	---  
	NETWORK_IS_SHOWING_SYSTEM_UI_OR_RECENTLY_REQUESTED_UPSELL = function() return invoker.call(0x7788DFE15016A182).bool end,
	---  
	NETWORK_NEED_TO_START_NEW_GAME_BUT_BLOCKED = function() return invoker.call(0x53C10C8BD774F2C9).bool end,
	---  
	NETWORK_CAN_BAIL = function() return invoker.call(0x580CE4438479CC61).bool end,
	---  
	NETWORK_BAIL = function(p0, p1, p2) invoker.call(0x95914459A87EBA28, p0, p1, p2) end,
	---  
	NETWORK_ON_RETURN_TO_SINGLE_PLAYER = function() invoker.call(0x283B6062A2C01E9B) end,
	---  
	NETWORK_TRANSITION_START = function(p0, p1, p2, p3) return invoker.call(0x8B4FFC790CA131EF, p0, p1, p2, p3).bool end,
	---  
	NETWORK_TRANSITION_ADD_STAGE = function(hash, p1, p2, state, p4) return invoker.call(0xC3BFED92026A2AAD, hash, p1, p2, state, p4).bool end,
	---  
	NETWORK_TRANSITION_FINISH = function(p0, p1, p2) return invoker.call(0x04918A41BC9B8157, p0, p1, p2).bool end,
	---11 - Need to download tunables.  
	---12 - Need to download background script.  
	---  
	---Returns 1 if the multiplayer is loaded, otherwhise 0.  
	NETWORK_CAN_ACCESS_MULTIPLAYER = function(loadingState) return invoker.call(0xAF50DA1A3F8B1BA4, loadingState).bool end,
	---  
	NETWORK_CHECK_CAN_ACCESS_AND_ALERT = function() return invoker.call(0x6FA9825D0B5A721B).bool end,
	---  
	_NETWORK_GET_ACCESS_CODE_LABEL_HEADING = function(accessCode) return invoker.call(0x967E6FB554E1B6DE, accessCode).str end,
	---  
	_NETWORK_GET_ACCESS_CODE_LABEL_BODY = function(accessCode) return invoker.call(0x214CA1730793EBA8, accessCode).str end,
	---  
	NETWORK_IS_MULTIPLAYER_DISABLED = function() return invoker.call(0x9747292807126EDA).bool end,
	---  
	NETWORK_CAN_ENTER_MULTIPLAYER = function() return invoker.call(0x7E782A910C362C25).bool end,
	---  
	NETWORK_SESSION_DO_FREEROAM_QUICKMATCH = function(p0, p1, p2) return invoker.call(0x330ED4D05491934F, p0, p1, p2).bool end,
	---  
	NETWORK_SESSION_DO_FRIEND_MATCHMAKING = function(p0, p1, p2) return invoker.call(0x2CFC76E0D087C994, p0, p1, p2).bool end,
	---p4 seems to be unused in 1.60/build 2628  
	NETWORK_SESSION_DO_CREW_MATCHMAKING = function(crewId, p1, p2, maxPlayers) return invoker.call(0x94BC51E9449D917F, crewId, p1, p2, maxPlayers).bool end,
	---  
	NETWORK_SESSION_DO_ACTIVITY_QUICKMATCH = function(p0, p1, p2, p3, p4) return invoker.call(0xBE3E347A87ACEB82, p0, p1, p2, p3, p4).bool end,
	---Does nothing in online but in offline it will cause the screen to fade to black. Nothing happens past then, the screen will sit at black until you restart GTA. Other stuff must be needed to actually host a session.  
	NETWORK_SESSION_HOST = function(p0, maxPlayers, p2) return invoker.call(0x6F3D4ED9BEE4E61D, p0, maxPlayers, p2).bool end,
	---  
	NETWORK_SESSION_HOST_CLOSED = function(p0, maxPlayers) return invoker.call(0xED34C0C02C098BB7, p0, maxPlayers).bool end,
	---Does nothing in online but in offline it will cause the screen to fade to black. Nothing happens past then, the screen will sit at black until you restart GTA. Other stuff must be needed to actually host a session.  
	NETWORK_SESSION_HOST_FRIENDS_ONLY = function(p0, maxPlayers) return invoker.call(0xB9CFD27A5D578D83, p0, maxPlayers).bool end,
	---  
	NETWORK_SESSION_IS_CLOSED_FRIENDS = function() return invoker.call(0xFBCFA2EA2E206890).bool end,
	---  
	NETWORK_SESSION_IS_CLOSED_CREW = function() return invoker.call(0x74732C6CA90DA2B4).bool end,
	---  
	NETWORK_SESSION_IS_SOLO = function() return invoker.call(0xF3929C2379B60CCE).bool end,
	---  
	NETWORK_SESSION_IS_PRIVATE = function() return invoker.call(0xCEF70AA5B3F89BA1).bool end,
	---  
	_NETWORK_SESSION_LEAVE_INCLUDING_REASON = function(leaveFlags, leaveReason) return invoker.call(0xE0128328CF1FD9F4, leaveFlags, leaveReason).bool end,
	---  
	NETWORK_SESSION_LEAVE = function(p0) return invoker.call(0xB9351A07A0D458B1, p0).bool end,
	---Only works as host.  
	NETWORK_SESSION_KICK_PLAYER = function(player) invoker.call(0xFA8904DC5F304220, player) end,
	---  
	NETWORK_SESSION_GET_KICK_VOTE = function(player) return invoker.call(0xD6D09A6F32F49EF1, player).bool end,
	---  
	NETWORK_SESSION_RESERVE_SLOTS_TRANSITION = function(p0, p1, p2) return invoker.call(0x041C7F2A6C9894E6, p0, p1, p2).bool end,
	---  
	NETWORK_JOIN_PREVIOUSLY_FAILED_SESSION = function() return invoker.call(0x59DF79317F85A7E0).bool end,
	---  
	NETWORK_JOIN_PREVIOUSLY_FAILED_TRANSITION = function() return invoker.call(0xFFE1E5B792D92B34).bool end,
	---  
	NETWORK_SESSION_SET_MATCHMAKING_GROUP = function(matchmakingGroup) invoker.call(0x49EC8030F5015F8B, matchmakingGroup) end,
	---playerType is an unsigned int from 0 to 4  
	---0 = regular joiner  
	---4 = spectator  
	NETWORK_SESSION_SET_MATCHMAKING_GROUP_MAX = function(playerType, playerCount) invoker.call(0x8B6A4DD0AF9CE215, playerType, playerCount) end,
	---  
	NETWORK_SESSION_GET_MATCHMAKING_GROUP_FREE = function(p0) return invoker.call(0x56CE820830EF040B, p0).int end,
	---groupId range: [0, 4]  
	NETWORK_SESSION_ADD_ACTIVE_MATCHMAKING_GROUP = function(groupId) invoker.call(0xCAE55F48D3D7875C, groupId) end,
	---  
	NETWORK_SESSION_SET_UNIQUE_CREW_LIMIT = function(p0) invoker.call(0xF49ABC20D8552257, p0) end,
	---  
	NETWORK_SESSION_GET_UNIQUE_CREW_LIMIT = function() return invoker.call(0xCDC936BF35EDCB73).int end,
	---  
	NETWORK_SESSION_SET_UNIQUE_CREW_LIMIT_TRANSITION = function(p0) invoker.call(0x4811BBAC21C5FCD5, p0) end,
	---  
	NETWORK_SESSION_SET_UNIQUE_CREW_ONLY_CREWS_TRANSITION = function(p0) invoker.call(0x5539C3EBF104A53A, p0) end,
	---  
	NETWORK_SESSION_SET_CREW_LIMIT_MAX_MEMBERS_TRANSITION = function(p0) invoker.call(0x702BC4D605522539, p0) end,
	---  
	NETWORK_SESSION_SET_MATCHMAKING_PROPERTY_ID = function(p0) invoker.call(0x3F52E880AAF6C8CA, p0) end,
	---p0 in the decompiled scripts is always the stat mesh_texblend * 0.07 to int  
	NETWORK_SESSION_SET_MATCHMAKING_MENTAL_STATE = function(p0) invoker.call(0xF1EEA2DDA9FFA69D, p0) end,
	---  
	NETWORK_SESSION_SET_NUM_BOSSES = function(num) invoker.call(0x59D421683D31835A, num) end,
	---  
	NETWORK_SESSION_SET_SCRIPT_VALIDATE_JOIN = function() invoker.call(0x1153FA02A659051C) end,
	---  
	NETWORK_SESSION_VALIDATE_JOIN = function(p0) invoker.call(0xC19F6C8E7865A6FF, p0) end,
	---..  
	NETWORK_ADD_FOLLOWERS = function(p0, p1) invoker.call(0x236406F60CF216D6, p0, p1) end,
	---  
	NETWORK_CLEAR_FOLLOWERS = function() invoker.call(0x058F43EC59A8631A) end,
	---  
	NETWORK_GET_GLOBAL_MULTIPLAYER_CLOCK = function(hours, minutes, seconds) invoker.call(0x6D03BFBD643B2A02, hours, minutes, seconds) end,
	---  
	NETWORK_SESSION_SET_GAMEMODE = function(p0) invoker.call(0x600F8CB31C7AAB6E, p0) end,
	---  
	NETWORK_SESSION_GET_HOST_AIM_PREFERENCE = function() return invoker.call(0xDFFA5BE8381C3314).int end,
	---  
	NETWORK_FIND_GAMERS_IN_CREW = function(crewId) return invoker.call(0xE532D6811B3A4D2A, crewId).bool end,
	---Uses attributes to find players with similar stats. Upper/Lower limit must be above zero or the fallback limit +/-0.1 is used.  
	---There can be up to 15 attributes, they are as follows:  
	---  
	---0 = Races  
	---1 = Parachuting  
	---2 = Horde  
	---3 = Darts  
	---4 = Arm Wrestling  
	---5 = Tennis  
	---6 = Golf  
	---7 = Shooting Range  
	---8 = Deathmatch  
	---9 = MPPLY_MCMWIN/MPPLY_CRMISSION  
	NETWORK_FIND_MATCHED_GAMERS = function(attribute, fallbackLimit, lowerLimit, upperLimit) return invoker.call(0xF7B2CFDE5C9F700D, attribute, fallbackLimit, lowerLimit, upperLimit).bool end,
	---  
	NETWORK_IS_FINDING_GAMERS = function() return invoker.call(0xDDDF64C91BFCF0AA).bool end,
	---  
	NETWORK_DID_FIND_GAMERS_SUCCEED = function() return invoker.call(0xF9B83B77929D8863).bool end,
	---  
	NETWORK_GET_NUM_FOUND_GAMERS = function() return invoker.call(0xA1B043EE79A916FB).int end,
	---  
	NETWORK_GET_FOUND_GAMER = function(p0, p1) return invoker.call(0x9DCFF2AFB68B3476, p0, p1).bool end,
	---  
	NETWORK_CLEAR_FOUND_GAMERS = function() invoker.call(0x6D14CCEE1B40381A) end,
	---  
	NETWORK_QUEUE_GAMER_FOR_STATUS = function(p0) return invoker.call(0x85A0EF54A500882C, p0).bool end,
	---  
	NETWORK_GET_GAMER_STATUS_FROM_QUEUE = function() return invoker.call(0x2CC848A861D01493).bool end,
	---  
	NETWORK_IS_GETTING_GAMER_STATUS = function() return invoker.call(0x94A8394D150B013A).bool end,
	---  
	NETWORK_DID_GET_GAMER_STATUS_SUCCEED = function() return invoker.call(0x5AE17C6B0134B7F1).bool end,
	---  
	NETWORK_GET_GAMER_STATUS_RESULT = function(p0, p1) return invoker.call(0x02A8BEC6FD9AF660, p0, p1).bool end,
	---  
	NETWORK_CLEAR_GET_GAMER_STATUS = function() invoker.call(0x86E0660E4F5C956D) end,
	---  
	NETWORK_SESSION_JOIN_INVITE = function() invoker.call(0xC6F8AB8A4189CF3A) end,
	---  
	NETWORK_SESSION_CANCEL_INVITE = function() invoker.call(0x2FBF47B1B36D36F9) end,
	---  
	NETWORK_SESSION_FORCE_CANCEL_INVITE = function() invoker.call(0xA29177F7703B5644) end,
	---  
	NETWORK_HAS_PENDING_INVITE = function() return invoker.call(0xAC8C7B9B88C4A668).bool end,
	---  
	NETWORK_HAS_CONFIRMED_INVITE = function() return invoker.call(0xC42DD763159F3461).bool end,
	---Triggers a CEventNetworkInviteConfirmed event  
	NETWORK_REQUEST_INVITE_CONFIRMED_EVENT = function() return invoker.call(0x62A0296C1BB1CEB3).bool end,
	---  
	NETWORK_SESSION_WAS_INVITED = function() return invoker.call(0x23DFB504655D0CE4).bool end,
	---  
	NETWORK_SESSION_GET_INVITER = function(gamerHandle) invoker.call(0xE57397B4A3429DD0, gamerHandle) end,
	---Seems to be true while "Getting GTA Online session details" shows up.  
	NETWORK_SESSION_IS_AWAITING_INVITE_RESPONSE = function() return invoker.call(0xD313DE83394AF134).bool end,
	---  
	NETWORK_SESSION_IS_DISPLAYING_INVITE_CONFIRMATION = function() return invoker.call(0xBDB6F89C729CF388).bool end,
	---  
	NETWORK_SUPPRESS_INVITE = function(toggle) invoker.call(0xA0682D67EF1FBA3D, toggle) end,
	---  
	NETWORK_BLOCK_INVITES = function(toggle) invoker.call(0x34F9E9049454A7A0, toggle) end,
	---  
	NETWORK_BLOCK_JOIN_QUEUE_INVITES = function(toggle) invoker.call(0xCFEB8AF24FC1D0BB, toggle) end,
	---  
	NETWORK_SET_CAN_RECEIVE_RS_INVITES = function(p0) invoker.call(0x68980414688F7F9D, p0) end,
	---  
	NETWORK_STORE_INVITE_THROUGH_RESTART = function() invoker.call(0xF814FEC6A19FD6E0) end,
	---  
	NETWORK_ALLOW_INVITE_PROCESS_IN_PLAYER_SWITCH = function(p0) invoker.call(0x6B07B9CE4D390375, p0) end,
	---  
	NETWORK_SET_SCRIPT_READY_FOR_EVENTS = function(toggle) invoker.call(0x7AC752103856FB20, toggle) end,
	---  
	NETWORK_IS_OFFLINE_INVITE_PENDING = function() return invoker.call(0x74698374C45701D2).bool end,
	---  
	NETWORK_CLEAR_OFFLINE_INVITE_PENDING = function() invoker.call(0x140E6A44870A11CE) end,
	---Retrieves the failed invite join alert reason  
	_NETWORK_INVITE_GET_JOIN_FAIL_REASON = function() return invoker.call(0x7B335F84501145BB).str end,
	---Clears the failed invite join alert reason  
	_NETWORK_INVITE_CLEAR_JOIN_FAIL_REASON = function() invoker.call(0x8EF5F5811A940F82) end,
	---Loads up the map that is loaded when beeing in mission creator  
	---Player gets placed in a mix between online/offline mode  
	---p0 is always 2 in R* scripts.  
	---  
	---Appears to be patched in gtav b757 (game gets terminated) alonside with most other network natives to prevent online modding ~ghost30812  
	NETWORK_SESSION_HOST_SINGLE_PLAYER = function(p0) invoker.call(0xC74C33FCA52856D5, p0) end,
	---  
	NETWORK_SESSION_LEAVE_SINGLE_PLAYER = function() invoker.call(0x3442775428FD2DAA) end,
	---  
	NETWORK_IS_GAME_IN_PROGRESS = function() return invoker.call(0x10FAB35428CCC9D7).bool end,
	---  
	NETWORK_IS_SESSION_ACTIVE = function() return invoker.call(0xD83C2B94E7508980).bool end,
	---  
	NETWORK_IS_IN_SESSION = function() return invoker.call(0xCA97246103B63917).bool end,
	---Hardcoded to return 0.  
	_NETWORK_IS_AMERICAS_VERSION = function() return invoker.call(0x0292BD7F3766CEBC).bool end,
	---This checks if player is playing on gta online or not.  
	---Please add an if and block your mod if this is "true".  
	NETWORK_IS_SESSION_STARTED = function() return invoker.call(0x9DE624D2FC4B603F).bool end,
	---  
	NETWORK_IS_SESSION_BUSY = function() return invoker.call(0xF4435D66A8E2905E).bool end,
	---  
	NETWORK_CAN_SESSION_END = function() return invoker.call(0x4EEBC3694E49C572).bool end,
	---  
	NETWORK_GET_GAME_MODE = function() return invoker.call(0x4C9034162368E206).int end,
	---  
	NETWORK_SESSION_MARK_VISIBLE = function(toggle) invoker.call(0x271CC6AB59EBF9A5, toggle) end,
	---  
	NETWORK_SESSION_IS_VISIBLE = function() return invoker.call(0xBA416D68C631496A).bool end,
	---  
	NETWORK_SESSION_BLOCK_JOIN_REQUESTS = function(toggle) invoker.call(0xA73667484D7037C3, toggle) end,
	---num player slots allowed in session, seems to work? 32 max  
	NETWORK_SESSION_CHANGE_SLOTS = function(slots, p1) invoker.call(0xB4AB419E0D86ACAE, slots, p1) end,
	---  
	NETWORK_SESSION_GET_PRIVATE_SLOTS = function() return invoker.call(0x53AFD64C6758F2F9).int end,
	---  
	NETWORK_SESSION_VOICE_HOST = function() return invoker.call(0x9C1556705F864230).bool end,
	---  
	NETWORK_SESSION_VOICE_LEAVE = function() return invoker.call(0x6793E42BE02B575D).bool end,
	---  
	NETWORK_SESSION_VOICE_CONNECT_TO_PLAYER = function(gamerHandle) invoker.call(0xABD5E88B8A2D3DB2, gamerHandle) end,
	---  
	NETWORK_SESSION_VOICE_RESPOND_TO_REQUEST = function(p0, p1) invoker.call(0x7F8413B7FC2AA6B9, p0, p1) end,
	---  
	NETWORK_SESSION_VOICE_SET_TIMEOUT = function(timeout) invoker.call(0x5B8ED3DB018927B1, timeout) end,
	---  
	NETWORK_SESSION_IS_IN_VOICE_SESSION = function() return invoker.call(0x855BC38818F6F684).bool end,
	---  
	NETWORK_SESSION_IS_VOICE_SESSION_ACTIVE = function() return invoker.call(0xB5D3453C98456528).bool end,
	---  
	NETWORK_SESSION_IS_VOICE_SESSION_BUSY = function() return invoker.call(0xEF0912DDF7C4CB4B).bool end,
	---Message is limited to 64 characters.  
	NETWORK_SEND_TEXT_MESSAGE = function(message, gamerHandle) return invoker.call(0x3A214F2EC889B100, message, gamerHandle).bool end,
	---  
	NETWORK_SET_ACTIVITY_SPECTATOR = function(toggle) invoker.call(0x75138790B4359A74, toggle) end,
	---  
	NETWORK_IS_ACTIVITY_SPECTATOR = function() return invoker.call(0x12103B9E0C9F92FB).bool end,
	---  
	NETWORK_SET_ACTIVITY_PLAYER_MAX = function(p0) invoker.call(0x0E4F77F7B9D74D84, p0) end,
	---  
	NETWORK_SET_ACTIVITY_SPECTATOR_MAX = function(maxSpectators) invoker.call(0x9D277B76D1D12222, maxSpectators) end,
	---  
	NETWORK_GET_ACTIVITY_PLAYER_NUM = function(p0) return invoker.call(0x73E2B500410DA5A2, p0).int end,
	---  
	NETWORK_IS_ACTIVITY_SPECTATOR_FROM_HANDLE = function(gamerHandle) return invoker.call(0x2763BBAA72A7BCB9, gamerHandle).bool end,
	---p0: Unknown int  
	---p1: Unknown int  
	---p2: Unknown int  
	---p3: Unknown int  
	---p4: Unknown always 0 in decompiled scripts  
	---p5: BOOL purpose unknown, both 0 and 1 are used in decompiled scripts.  
	---p6: BOOL purpose unknown, both 0 and 1 are used in decompiled scripts.  
	---p7: Unknown int, it's an int according to decompiled scripts, however the value is always 0 or 1.  
	---p8: Unknown int, it's an int according to decompiled scripts, however the value is always 0 or 1.  
	---p9: Unknown int, sometimes 0, but also 32768 or 16384 appear in decompiled scripst, maybe a flag of some sort?  
	---  
	---From what I can tell it looks like it does the following:  
	---Creates/hosts a new transition to another online session, using this in FiveM will result in other players being disconencted from the server/preventing them from joining. This is most likely because I entered the wrong session parameters since they're pretty much all unknown right now.  
	---You also need to use `NetworkJoinTransition(Player player)` and `NetworkLaunchTransition()`.  
	NETWORK_HOST_TRANSITION = function(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9) return invoker.call(0xA60BB5CE242BB254, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9).bool end,
	---  
	NETWORK_DO_TRANSITION_QUICKMATCH = function(p0, p1, p2, p3, p4, p5) return invoker.call(0x71FB0EBCD4915D56, p0, p1, p2, p3, p4, p5).bool end,
	---  
	NETWORK_DO_TRANSITION_QUICKMATCH_ASYNC = function(p0, p1, p2, p3, p4, p5) return invoker.call(0xA091A5E44F0072E5, p0, p1, p2, p3, p4, p5).bool end,
	---  
	NETWORK_DO_TRANSITION_QUICKMATCH_WITH_GROUP = function(p0, p1, p2, p3, p4, p5, p6, p7) return invoker.call(0x9C4AB58491FDC98A, p0, p1, p2, p3, p4, p5, p6, p7).bool end,
	---  
	NETWORK_JOIN_GROUP_ACTIVITY = function() return invoker.call(0xA06509A691D12BE4).bool end,
	---  
	NETWORK_CLEAR_GROUP_ACTIVITY = function() invoker.call(0x1888694923EF4591) end,
	---  
	NETWORK_RETAIN_ACTIVITY_GROUP = function() invoker.call(0xB13E88E655E5A3BC) end,
	---  
	NETWORK_IS_TRANSITION_CLOSED_FRIENDS = function() return invoker.call(0x6512765E3BE78C50).bool end,
	---  
	NETWORK_IS_TRANSITION_CLOSED_CREW = function() return invoker.call(0x0DBD5D7E3C5BEC3B).bool end,
	---  
	NETWORK_IS_TRANSITION_SOLO = function() return invoker.call(0x5DC577201723960A).bool end,
	---  
	NETWORK_IS_TRANSITION_PRIVATE = function() return invoker.call(0x5A6AA44FF8E931E6).bool end,
	---  
	NETWORK_GET_NUM_TRANSITION_NON_ASYNC_GAMERS = function() return invoker.call(0x617F49C2668E6155).int end,
	---  
	NETWORK_MARK_AS_PREFERRED_ACTIVITY = function(p0) invoker.call(0x261E97AD7BCF3D40, p0) end,
	---  
	NETWORK_MARK_AS_WAITING_ASYNC = function(p0) invoker.call(0x39917E1B4CB0F911, p0) end,
	---  
	NETWORK_SET_IN_PROGRESS_FINISH_TIME = function(p0) invoker.call(0x2CE9D95E4051AECD, p0) end,
	---  
	NETWORK_SET_TRANSITION_CREATOR_HANDLE = function(p0) invoker.call(0xEF26739BCD9907D5, p0) end,
	---  
	NETWORK_CLEAR_TRANSITION_CREATOR_HANDLE = function() invoker.call(0xFB3272229A82C759) end,
	---  
	NETWORK_INVITE_GAMERS_TO_TRANSITION = function(p0, p1) return invoker.call(0x4A595C32F77DFF76, p0, p1).bool end,
	---  
	NETWORK_SET_GAMER_INVITED_TO_TRANSITION = function(gamerHandle) invoker.call(0xCA2C8073411ECDB6, gamerHandle) end,
	---  
	NETWORK_LEAVE_TRANSITION = function() return invoker.call(0xD23A1A815D21DB19).bool end,
	---  
	NETWORK_LAUNCH_TRANSITION = function() return invoker.call(0x2DCF46CB1A4F0884).bool end,
	---Appears to set whether a transition should be started when the session is migrating.  
	NETWORK_SET_DO_NOT_LAUNCH_FROM_JOIN_AS_MIGRATED_HOST = function(toggle) invoker.call(0xA2E9C1AB8A92E8CD, toggle) end,
	---  
	NETWORK_CANCEL_TRANSITION_MATCHMAKING = function() invoker.call(0x023782EFC70585EE) end,
	---  
	NETWORK_BAIL_TRANSITION = function(p0, p1, p2) invoker.call(0xEAA572036990CD1B, p0, p1, p2) end,
	---  
	NETWORK_DO_TRANSITION_TO_GAME = function(p0, maxPlayers) return invoker.call(0x3E9BB38102A589B0, p0, maxPlayers).bool end,
	---  
	NETWORK_DO_TRANSITION_TO_NEW_GAME = function(p0, maxPlayers, p2) return invoker.call(0x4665F51EFED00034, p0, maxPlayers, p2).bool end,
	---p2 is true 3/4 of the occurrences I found.  
	---'players' is the number of players for a session. On PS3/360 it's always 18. On PC it's 32.  
	NETWORK_DO_TRANSITION_TO_FREEMODE = function(p0, p1, p2, players, p4) return invoker.call(0x3AAD8B2FCA1E289F, p0, p1, p2, players, p4).bool end,
	---  
	NETWORK_DO_TRANSITION_TO_NEW_FREEMODE = function(p0, p1, players, p3, p4, p5) return invoker.call(0x9E80A5BA8109F974, p0, p1, players, p3, p4, p5).bool end,
	---  
	NETWORK_IS_TRANSITION_TO_GAME = function() return invoker.call(0x9D7696D8F4FA6CB7).bool end,
	---Returns count.  
	NETWORK_GET_TRANSITION_MEMBERS = function(data, dataCount) return invoker.call(0x73B000F7FBC55829, data, dataCount).int end,
	---  
	NETWORK_APPLY_TRANSITION_PARAMETER = function(p0, p1) invoker.call(0x521638ADA1BA0D18, p0, p1) end,
	---  
	NETWORK_APPLY_TRANSITION_PARAMETER_STRING = function(p0, string, p2) invoker.call(0xEBEFC2E77084F599, p0, string, p2) end,
	---  
	NETWORK_SEND_TRANSITION_GAMER_INSTRUCTION = function(gamerHandle, p1, p2, p3, p4) return invoker.call(0x31D1D2B858D25E6B, gamerHandle, p1, p2, p3, p4).bool end,
	---  
	NETWORK_MARK_TRANSITION_GAMER_AS_FULLY_JOINED = function(p0) return invoker.call(0x5728BB6D63E3FF1D, p0).bool end,
	---  
	NETWORK_IS_TRANSITION_HOST = function() return invoker.call(0x0B824797C9BF2159).bool end,
	---  
	NETWORK_IS_TRANSITION_HOST_FROM_HANDLE = function(gamerHandle) return invoker.call(0x6B5C83BA3EFE6A10, gamerHandle).bool end,
	---  
	NETWORK_GET_TRANSITION_HOST = function(gamerHandle) return invoker.call(0x65042B9774C4435E, gamerHandle).bool end,
	---  
	NETWORK_IS_IN_TRANSITION = function() return invoker.call(0x68049AEFF83D8F0A).bool end,
	---  
	NETWORK_IS_TRANSITION_STARTED = function() return invoker.call(0x53FA83401D9C07FE).bool end,
	---  
	NETWORK_IS_TRANSITION_BUSY = function() return invoker.call(0x520F3282A53D26B7).bool end,
	---  
	NETWORK_IS_TRANSITION_MATCHMAKING = function() return invoker.call(0x292564C735375EDF).bool end,
	---  
	NETWORK_IS_TRANSITION_LEAVE_POSTPONED = function() return invoker.call(0xC571D0E77D8BBC29).bool end,
	---  
	NETWORK_TRANSITION_SET_IN_PROGRESS = function(p0) invoker.call(0x1398582B7F72B3ED, p0) end,
	---  
	NETWORK_TRANSITION_SET_CONTENT_CREATOR = function(p0) invoker.call(0x1F8E00FB18239600, p0) end,
	---  
	NETWORK_TRANSITION_SET_ACTIVITY_ISLAND = function(p0) invoker.call(0xF6F4383B7C92F11A, p0) end,
	---  
	NETWORK_OPEN_TRANSITION_MATCHMAKING = function() invoker.call(0x2B3A8F7CA3A38FDE) end,
	---  
	NETWORK_CLOSE_TRANSITION_MATCHMAKING = function() invoker.call(0x43F4DBA69710E01E) end,
	---  
	NETWORK_IS_TRANSITION_OPEN_TO_MATCHMAKING = function() return invoker.call(0x37A4494483B9F5C9).bool end,
	---  
	NETWORK_SET_TRANSITION_VISIBILITY_LOCK = function(p0, p1) invoker.call(0x0C978FDA19692C2C, p0, p1) end,
	---  
	NETWORK_IS_TRANSITION_VISIBILITY_LOCKED = function() return invoker.call(0xD0A484CB2F829FBE).bool end,
	---  
	NETWORK_SET_TRANSITION_ACTIVITY_ID = function(p0) invoker.call(0x30DE938B516F0AD2, p0) end,
	---  
	NETWORK_CHANGE_TRANSITION_SLOTS = function(p0, p1) invoker.call(0xEEEDA5E6D7080987, p0, p1) end,
	---  
	NETWORK_TRANSITION_BLOCK_JOIN_REQUESTS = function(p0) invoker.call(0x973D76AA760A6CB6, p0) end,
	---  
	NETWORK_HAS_PLAYER_STARTED_TRANSITION = function(player) return invoker.call(0x9AC9CCBFA8C29795, player).bool end,
	---  
	NETWORK_ARE_TRANSITION_DETAILS_VALID = function(p0) return invoker.call(0x2615AA2A695930C1, p0).bool end,
	---int handle[76];  
	---          NETWORK_HANDLE_FROM_FRIEND(iSelectedPlayer, &handle[0], 13);  
	---          Player uVar2 = NETWORK_GET_PLAYER_FROM_GAMER_HANDLE(&handle[0]);  
	---          NETWORK_JOIN_TRANSITION(uVar2);  
	---nothing doin.  
	NETWORK_JOIN_TRANSITION = function(player) return invoker.call(0x9D060B08CD63321A, player).bool end,
	---  
	NETWORK_HAS_INVITED_GAMER_TO_TRANSITION = function(p0) return invoker.call(0x7284A47B3540E6CF, p0).bool end,
	---  
	NETWORK_HAS_TRANSITION_INVITE_BEEN_ACKED = function(p0) return invoker.call(0x3F9990BF5F22759C, p0).bool end,
	---  
	NETWORK_IS_ACTIVITY_SESSION = function() return invoker.call(0x05095437424397FA).bool end,
	---  
	NETWORK_DISABLE_REALTIME_MULTIPLAYER = function() invoker.call(0x236905C700FDB54D) end,
	---  
	NETWORK_OVERRIDE_REALTIME_MULTIPLAYER_CONTROL_DISABLE = function() invoker.call(0x04D27017A38E747D) end,
	---  
	NETWORK_DISABLE_REALTIME_MULTIPLAYER_SPECTATOR = function() invoker.call(0xE20BEB3E2B5A8A2B) end,
	---Does nothing. It's just a nullsub.  
	NETWORK_SET_PRESENCE_SESSION_INVITES_BLOCKED = function(toggle) invoker.call(0x4A9FDE3A5A6D0437, toggle) end,
	---  
	NETWORK_SEND_INVITE_VIA_PRESENCE = function(gamerHandle, p1, dataCount, p3) return invoker.call(0xC3C7A6AFDB244624, gamerHandle, p1, dataCount, p3).bool end,
	---  
	NETWORK_SEND_TRANSITION_INVITE_VIA_PRESENCE = function(gamerHandle, p1, dataCount, p3) return invoker.call(0xC116FF9B4D488291, gamerHandle, p1, dataCount, p3).bool end,
	---Contains the string "NETWORK_SEND_PRESENCE_TRANSITION_INVITE" but so does 0xC116FF9B4D488291; seems to fit alphabetically here, tho.  
	NETWORK_SEND_IMPORTANT_TRANSITION_INVITE_VIA_PRESENCE = function(gamerHandle, p1, dataCount, p3) return invoker.call(0x1171A97A3D3981B6, gamerHandle, p1, dataCount, p3).bool end,
	---  
	NETWORK_GET_PRESENCE_INVITE_INDEX_BY_ID = function(p0) return invoker.call(0x742B58F723233ED9, p0).int end,
	---  
	NETWORK_GET_NUM_PRESENCE_INVITES = function() return invoker.call(0xCEFA968912D0F78D).int end,
	---  
	NETWORK_ACCEPT_PRESENCE_INVITE = function(p0) return invoker.call(0xFA91550DF9318B22, p0).bool end,
	---  
	NETWORK_REMOVE_PRESENCE_INVITE = function(p0) return invoker.call(0xF0210268DB0974B1, p0).bool end,
	---  
	NETWORK_GET_PRESENCE_INVITE_ID = function(p0) return invoker.call(0xDFF09646E12EC386, p0).int end,
	---  
	NETWORK_GET_PRESENCE_INVITE_INVITER = function(p0) return invoker.call(0x4962CC4AA2F345B7, p0).str end,
	---  
	NETWORK_GET_PRESENCE_INVITE_HANDLE = function(p0, p1) return invoker.call(0x38D5B0FEBB086F75, p0, p1).bool end,
	---  
	NETWORK_GET_PRESENCE_INVITE_SESSION_ID = function(p0) return invoker.call(0x26E1CD96B0903D60, p0).int end,
	---  
	NETWORK_GET_PRESENCE_INVITE_CONTENT_ID = function(p0) return invoker.call(0x24409FC4C55CB22D, p0).str end,
	---  
	NETWORK_GET_PRESENCE_INVITE_PLAYLIST_LENGTH = function(p0) return invoker.call(0xD39B3FFF8FFDD5BF, p0).int end,
	---  
	NETWORK_GET_PRESENCE_INVITE_PLAYLIST_CURRENT = function(p0) return invoker.call(0x728C4CC7920CD102, p0).int end,
	---  
	NETWORK_GET_PRESENCE_INVITE_FROM_ADMIN = function(p0) return invoker.call(0x3DBF2DF0AEB7D289, p0).bool end,
	---  
	NETWORK_GET_PRESENCE_INVITE_IS_TOURNAMENT = function(p0) return invoker.call(0x8806CEBFABD3CE05, p0).bool end,
	---  
	NETWORK_HAS_FOLLOW_INVITE = function() return invoker.call(0x76D9B976C4C09FDE).bool end,
	---  
	NETWORK_ACTION_FOLLOW_INVITE = function() return invoker.call(0xC88156EBB786F8D5).bool end,
	---  
	NETWORK_CLEAR_FOLLOW_INVITE = function() return invoker.call(0x439BFDE3CD0610F6).bool end,
	---  
	NETWORK_REMOVE_AND_CANCEL_ALL_INVITES = function() invoker.call(0xEBF8284D8CADEB53) end,
	---  
	NETWORK_REMOVE_TRANSITION_INVITE = function(p0) invoker.call(0x7524B431B2E6F7EE, p0) end,
	---  
	NETWORK_REMOVE_ALL_TRANSITION_INVITE = function() invoker.call(0x726E0375C7A26368) end,
	---  
	NETWORK_REMOVE_AND_CANCEL_ALL_TRANSITION_INVITES = function() invoker.call(0xF083835B70BA9BFE) end,
	---  
	NETWORK_INVITE_GAMERS = function(p0, p1, p2, p3) return invoker.call(0x9D80CD1D0E6327DE, p0, p1, p2, p3).bool end,
	---  
	NETWORK_HAS_INVITED_GAMER = function(p0) return invoker.call(0x4D86CD31E8976ECE, p0).bool end,
	---  
	NETWORK_HAS_MADE_INVITE_DECISION = function(gamerHandle) return invoker.call(0x71DC455F5CD1C2B1, gamerHandle).bool end,
	---  
	NETWORK_GET_INVITE_REPLY_STATUS = function(p0) return invoker.call(0x3855FB5EB2C5E8B2, p0).int end,
	---  
	NETWORK_GET_CURRENTLY_SELECTED_GAMER_HANDLE_FROM_INVITE_MENU = function(p0) return invoker.call(0x74881E6BCAE2327C, p0).bool end,
	---  
	NETWORK_SET_CURRENTLY_SELECTED_GAMER_HANDLE_FROM_INVITE_MENU = function(p0) return invoker.call(0x7206F674F2A3B1BB, p0).bool end,
	---  
	NETWORK_SET_INVITE_ON_CALL_FOR_INVITE_MENU = function(p0) invoker.call(0x66F010A4B031A331, p0) end,
	---  
	NETWORK_CHECK_DATA_MANAGER_SUCCEEDED_FOR_HANDLE = function(p0, gamerHandle) return invoker.call(0x44B37CDCAE765AAE, p0, gamerHandle).bool end,
	---  
	NETWORK_CHECK_DATA_MANAGER_FOR_HANDLE = function(p0, gamerHandle) return invoker.call(0x4AD490AE1536933B, p0, gamerHandle).bool end,
	---  
	NETWORK_SET_INVITE_FAILED_MESSAGE_FOR_INVITE_MENU = function(p0, p1) invoker.call(0x0D77A82DC2D0DA59, p0, p1) end,
	---  
	FILLOUT_PM_PLAYER_LIST = function(gamerHandle, p1, p2) return invoker.call(0xCBBD7C4991B64809, gamerHandle, p1, p2).bool end,
	---  
	FILLOUT_PM_PLAYER_LIST_WITH_NAMES = function(p0, p1, p2, p3) return invoker.call(0x716B6DB9D1886106, p0, p1, p2, p3).bool end,
	---  
	REFRESH_PLAYER_LIST_STATS = function(p0) return invoker.call(0xE26CCFF8094D8C74, p0).bool end,
	---  
	NETWORK_SET_CURRENT_DATA_MANAGER_HANDLE = function(p0) return invoker.call(0x796A87B3B68D1F3D, p0).bool end,
	---Hardcoded to return false.  
	NETWORK_IS_IN_PLATFORM_PARTY = function() return invoker.call(0x2FC5650B0271CB57).bool end,
	---  
	NETWORK_GET_PLATFORM_PARTY_MEMBER_COUNT = function() return invoker.call(0x01ABCE5E7CBDA196).int end,
	---  
	NETWORK_GET_PLATFORM_PARTY_MEMBERS = function(data, dataSize) return invoker.call(0x120364DE2845DAF8, data, dataSize).int end,
	---Hardcoded to return false.  
	NETWORK_IS_IN_PLATFORM_PARTY_CHAT = function() return invoker.call(0xFD8B834A8BA05048).bool end,
	---This would be nice to see if someone is in party chat, but 2 sad notes.  
	---1) It only becomes true if said person is speaking in that party at the time.  
	---2) It will never, become true unless you are in that party with said person.  
	NETWORK_IS_CHATTING_IN_PLATFORM_PARTY = function(gamerHandle) return invoker.call(0x8DE9945BCC9AEC52, gamerHandle).bool end,
	---  
	NETWORK_CAN_QUEUE_FOR_PREVIOUS_SESSION_JOIN = function() return invoker.call(0x2BF66D2E7414F686).bool end,
	---  
	NETWORK_IS_QUEUING_FOR_SESSION_JOIN = function() return invoker.call(0x14922ED3E38761F0).bool end,
	---  
	NETWORK_CLEAR_QUEUED_JOIN_REQUEST = function() invoker.call(0x6CE50E47F5543D0C) end,
	---  
	NETWORK_SEND_QUEUED_JOIN_REQUEST = function() invoker.call(0xFA2888E3833C8E96) end,
	---  
	NETWORK_REMOVE_ALL_QUEUED_JOIN_REQUESTS = function() invoker.call(0x25D990F8E0E3F13C) end,
	---  
	NETWORK_SEED_RANDOM_NUMBER_GENERATOR = function(seed) invoker.call(0xF1B84178F8674195, seed) end,
	---  
	NETWORK_GET_RANDOM_INT = function() return invoker.call(0x599E4FA1F87EB5FF).int end,
	---Same as GET_RANDOM_INT_IN_RANGE  
	NETWORK_GET_RANDOM_INT_RANGED = function(rangeStart, rangeEnd) return invoker.call(0xE30CF56F1EFA5F43, rangeStart, rangeEnd).int end,
	---  
	_NETWORK_GET_RANDOM_FLOAT_RANGED = function(rangeStart, rangeEnd) return invoker.call(0x04BD27B5ACB67067, rangeStart, rangeEnd).float end,
	---  
	NETWORK_PLAYER_IS_CHEATER = function() return invoker.call(0x655B91F1495A9090).bool end,
	---  
	NETWORK_PLAYER_GET_CHEATER_REASON = function() return invoker.call(0x172F75B6EE2233BA).int end,
	---  
	NETWORK_PLAYER_IS_BADSPORT = function() return invoker.call(0x19D8DA0E5A68045A).bool end,
	---  
	REMOTE_CHEATER_PLAYER_DETECTED = function(player, a, b) return invoker.call(0x472841A026D26D8B, player, a, b).bool end,
	---  
	BAD_SPORT_PLAYER_LEFT_DETECTED = function(gamerHandle, event, amountReceived) return invoker.call(0xEC5E3AF5289DCA81, gamerHandle, event, amountReceived).bool end,
	---  
	NETWORK_ADD_INVALID_OBJECT_MODEL = function(modelHash, p1) invoker.call(0x7F562DBC212E81F9, modelHash, p1) end,
	---  
	NETWORK_REMOVE_INVALID_OBJECT_MODEL = function(modelHash) invoker.call(0x791EDB5803B2F468, modelHash) end,
	---  
	NETWORK_CLEAR_INVALID_OBJECT_MODELS = function() invoker.call(0x03B2F03A53D85E41) end,
	---  
	NETWORK_APPLY_PED_SCAR_DATA = function(ped, p1) invoker.call(0xE66C690248F11150, ped, p1) end,
	---  
	NETWORK_SET_THIS_SCRIPT_IS_NETWORK_SCRIPT = function(maxNumMissionParticipants, p1, instanceId) invoker.call(0x1CA59E306ECB80A5, maxNumMissionParticipants, p1, instanceId) end,
	---  
	NETWORK_TRY_TO_SET_THIS_SCRIPT_IS_NETWORK_SCRIPT = function(p0, p1, p2) return invoker.call(0xD1110739EEADB592, p0, p1, p2).bool end,
	---  
	NETWORK_GET_THIS_SCRIPT_IS_NETWORK_SCRIPT = function() return invoker.call(0x2910669969E9535E).bool end,
	---  
	NETWORK_GET_MAX_NUM_PARTICIPANTS = function() return invoker.call(0xA6C90FBC38E395EE).int end,
	---  
	NETWORK_GET_NUM_PARTICIPANTS = function() return invoker.call(0x18D0456E86604654).int end,
	---  
	NETWORK_GET_SCRIPT_STATUS = function() return invoker.call(0x57D158647A6BFABF).int end,
	---  
	NETWORK_REGISTER_HOST_BROADCAST_VARIABLES = function(vars, numVars, debugName) invoker.call(0x3E9B2F01C50DF595, vars, numVars, debugName) end,
	---  
	NETWORK_REGISTER_PLAYER_BROADCAST_VARIABLES = function(vars, numVars, debugName) invoker.call(0x3364AA97340CA215, vars, numVars, debugName) end,
	---  
	NETWORK_REGISTER_HIGH_FREQUENCY_HOST_BROADCAST_VARIABLES = function(p0, p1, p2) invoker.call(0xEA8C0DDB10E2822A, p0, p1, p2) end,
	---  
	NETWORK_REGISTER_HIGH_FREQUENCY_PLAYER_BROADCAST_VARIABLES = function(p0, p1, p2) invoker.call(0xD6D7478CA62B8D41, p0, p1, p2) end,
	---  
	NETWORK_FINISH_BROADCASTING_DATA = function() invoker.call(0x64F62AFB081E260D) end,
	---Note: this native was added in build 889.19  
	_NETWORK_GET_HOST_BROADCAST_DATA_SIZE_UNSYNCED = function(scriptNameHash, instance, positionHash, handlerNum) return invoker.call(0x72C8588ABE22C972, scriptNameHash, instance, positionHash, handlerNum).int end,
	---Note: this native was added in build 889.19  
	_NETWORK_GET_PLAYER_BROADCAST_DATA_SIZE_UNSYNCED = function(scriptNameHash, instance, positionHash, handlerNum) return invoker.call(0xB99CD664FD4720A1, scriptNameHash, instance, positionHash, handlerNum).int end,
	---Note: this native was added in build 889.19  
	_NETWORK_GET_BROADCAST_DATA_HOST_UPDATE_SIZE = function(scriptNameHash, instance, positionHash, handlerNum) return invoker.call(0xE448693B3EA3B92C, scriptNameHash, instance, positionHash, handlerNum).int end,
	---Note: this native was added in build 889.19  
	_NETWORK_GET_BROADCAST_DATA_PLAYER_UPDATE_SIZE = function(scriptNameHash, instance, positionHash, handlerNum) return invoker.call(0xAC3F722321800755, scriptNameHash, instance, positionHash, handlerNum).int end,
	---  
	NETWORK_HAS_RECEIVED_HOST_BROADCAST_DATA = function() return invoker.call(0x5D10B3795F3FC886).bool end,
	---  
	NETWORK_GET_PLAYER_INDEX = function(player) return invoker.call(0x24FB80D107371267, player).int end,
	---  
	NETWORK_GET_PARTICIPANT_INDEX = function(index) return invoker.call(0x1B84DF6AF2A46938, index).int end,
	---Returns the Player associated to a given Ped when in an online session.  
	NETWORK_GET_PLAYER_INDEX_FROM_PED = function(ped) return invoker.call(0x6C0E2E0125610278, ped).int end,
	---Returns the amount of players connected in the current session. Only works when connected to a session/server.  
	NETWORK_GET_NUM_CONNECTED_PLAYERS = function() return invoker.call(0xA4A79DD2D9600654).int end,
	---  
	NETWORK_IS_PLAYER_CONNECTED = function(player) return invoker.call(0x93DC1BE4E1ABE9D1, player).bool end,
	---  
	NETWORK_GET_TOTAL_NUM_PLAYERS = function() return invoker.call(0xCF61D4B4702EE9EB).int end,
	---  
	NETWORK_IS_PARTICIPANT_ACTIVE = function(p0) return invoker.call(0x6FF8FF40B6357D45, p0).bool end,
	---  
	NETWORK_IS_PLAYER_ACTIVE = function(player) return invoker.call(0xB8DFD30D6973E135, player).bool end,
	---  
	NETWORK_IS_PLAYER_A_PARTICIPANT = function(player) return invoker.call(0x3CA58F6CB7CBD784, player).bool end,
	---  
	NETWORK_IS_HOST_OF_THIS_SCRIPT = function() return invoker.call(0x83CD99A1E6061AB5).bool end,
	---  
	NETWORK_GET_HOST_OF_THIS_SCRIPT = function() return invoker.call(0xC7B4D79B01FA7A5C).int end,
	---scriptName examples:  
	---"freemode", "AM_CR_SecurityVan", ...  
	---  
	---Most of the time, these values are used:  
	---instance_id = -1  
	---position_hash = 0  
	NETWORK_GET_HOST_OF_SCRIPT = function(scriptName, instance_id, position_hash) return invoker.call(0x1D6A14F1F9A736FC, scriptName, instance_id, position_hash).int end,
	---  
	NETWORK_SET_MISSION_FINISHED = function() invoker.call(0x3B3D11CD9FFCDFC9) end,
	---  
	NETWORK_IS_SCRIPT_ACTIVE = function(scriptName, instance_id, p2, position_hash) return invoker.call(0x9D40DF90FAD26098, scriptName, instance_id, p2, position_hash).bool end,
	---  
	NETWORK_IS_SCRIPT_ACTIVE_BY_HASH = function(scriptHash, p1, p2, p3) return invoker.call(0xDA7DE67F5FE5EE13, scriptHash, p1, p2, p3).bool end,
	---  
	NETWORK_IS_THREAD_A_NETWORK_SCRIPT = function(threadId) return invoker.call(0x560B423D73015E77, threadId).bool end,
	---  
	NETWORK_GET_NUM_SCRIPT_PARTICIPANTS = function(scriptName, instance_id, position_hash) return invoker.call(0x3658E8CD94FC121A, scriptName, instance_id, position_hash).int end,
	---  
	NETWORK_GET_INSTANCE_ID_OF_THIS_SCRIPT = function() return invoker.call(0x638A3A81733086DB).int end,
	---  
	NETWORK_GET_POSITION_HASH_OF_THIS_SCRIPT = function() return invoker.call(0x257ED0FADF750BCF).int end,
	---  
	NETWORK_IS_PLAYER_A_PARTICIPANT_ON_SCRIPT = function(player, script, instance_id) return invoker.call(0x1AD5B71586B94820, player, script, instance_id).bool end,
	---  
	NETWORK_PREVENT_SCRIPT_HOST_MIGRATION = function() invoker.call(0x2302C0264EA58D31) end,
	---  
	NETWORK_REQUEST_TO_BE_HOST_OF_THIS_SCRIPT = function() invoker.call(0x741A3D8380319A81) end,
	---Return the local Participant ID  
	PARTICIPANT_ID = function() return invoker.call(0x90986E8876CE0A83).int end,
	---Return the local Participant ID.  
	---  
	---This native is exactly the same as 'PARTICIPANT_ID' native.  
	PARTICIPANT_ID_TO_INT = function() return invoker.call(0x57A3BDDAD8E5AA0A).int end,
	---  
	NETWORK_GET_KILLER_OF_PLAYER = function(player, weaponHash) return invoker.call(0x2DA41ED6E1FCD7A5, player, weaponHash).int end,
	---  
	NETWORK_GET_DESTROYER_OF_NETWORK_ID = function(netId, weaponHash) return invoker.call(0x7A1ADEEF01740A24, netId, weaponHash).int end,
	---  
	NETWORK_GET_DESTROYER_OF_ENTITY = function(entity, weaponHash) return invoker.call(0xC434133D9BA52777, entity, weaponHash).int end,
	---NETWORK_GET_ASSISTED_DAMAGE_OF_ENTITY that ensures the entity is dead (IS_ENTITY_DEAD)  
	NETWORK_GET_ASSISTED_KILL_OF_ENTITY = function(player, entity, p2) return invoker.call(0x83660B734994124D, player, entity, p2).bool end,
	---  
	NETWORK_GET_ASSISTED_DAMAGE_OF_ENTITY = function(player, entity, p2) return invoker.call(0x4CACA84440FA26F6, player, entity, p2).bool end,
	---  
	NETWORK_GET_ENTITY_KILLER_OF_PLAYER = function(player, weaponHash) return invoker.call(0x42B2DAA6B596F5F8, player, weaponHash).int end,
	---  
	NETWORK_SET_CURRENT_PUBLIC_CONTENT_ID = function(missionId) invoker.call(0x2C863ACDCD12B3DB, missionId) end,
	---  
	NETWORK_SET_CURRENT_CHAT_OPTION = function(newChatOption) invoker.call(0x3DAD00265FBF356B, newChatOption) end,
	---mpSettingSpawn:  
	---  
	---enum eMpSettingSpawn  
	---{  
	---	MP_SETTING_SPAWN_NULL,  
	---	MP_SETTING_SPAWN_PROPERTY,  
	---	MP_SETTING_SPAWN_LAST_POSITION,  
	---	MP_SETTING_SPAWN_GARAGE,  
	---	MP_SETTING_SPAWN_RANDOM,  
	---	MP_SETTING_SPAWN_PRIVATE_YACHT,  
	---	MP_SETTING_SPAWN_OFFICE,  
	---	MP_SETTING_SPAWN_CLUBHOUSE,  
	---	MP_SETTING_SPAWN_IE_WAREHOUSE,  
	---	MP_SETTING_SPAWN_BUNKER,  
	---	MP_SETTING_SPAWN_HANGAR,  
	---	MP_SETTING_SPAWN_DEFUNCT_BASE,  
	---	MP_SETTING_SPAWN_NIGHTCLUB,  
	---	MP_SETTING_SPAWN_ARENA_GARAGE,  
	---	MP_SETTING_SPAWN_CASINO_APARTMENT,  
	---	MP_SETTING_SPAWN_ARCADE,  
	---	MP_SETTING_SPAWN_SUBMARINE,  
	---	MP_SETTING_SPAWN_CAR_MEET,  
	---	MP_SETTING_SPAWN_AUTO_SHOP,  
	---	MP_SETTING_SPAWN_FIXER_HQ,  
	---	MP_SETTING_SPAWN_MAX,  
	---};  
	NETWORK_SET_CURRENT_SPAWN_LOCATION_OPTION = function(mpSettingSpawn) invoker.call(0xAA6D5451DC3448B6, mpSettingSpawn) end,
	---Used by MetricVEHICLE_DIST_DRIVEN  
	NETWORK_SET_VEHICLE_DRIVEN_IN_TEST_DRIVE = function(toggle) invoker.call(0x8C70252FC40F320B, toggle) end,
	---Sets 'loc' variable used in MetricVEHICLE_DIST_DRIVEN  
	NETWORK_SET_VEHICLE_DRIVEN_LOCATION = function(location) invoker.call(0xA0CE91E47531D3BB, location) end,
	---  
	NETWORK_RESURRECT_LOCAL_PLAYER = function(x, y, z, heading, p4, changetime, p6, p7, p8) invoker.call(0xEA23C49EAA83ACFB, x, y, z, heading, p4, changetime, p6, p7, p8) end,
	---  
	NETWORK_SET_LOCAL_PLAYER_INVINCIBLE_TIME = function(time) invoker.call(0x2D95C7E2D7E07307, time) end,
	---  
	NETWORK_IS_LOCAL_PLAYER_INVINCIBLE = function() return invoker.call(0x8A8694B48715B000).bool end,
	---  
	NETWORK_DISABLE_INVINCIBLE_FLASHING = function(player, toggle) invoker.call(0x9DD368BF06983221, player, toggle) end,
	---  
	NETWORK_PATCH_POST_CUTSCENE_HS4F_TUN_ENT = function(ped) invoker.call(0xF0BC9BCD24A511D5, ped) end,
	---  
	NETWORK_SET_LOCAL_PLAYER_SYNC_LOOK_AT = function(toggle) invoker.call(0x524FF0AEFF9C3973, toggle) end,
	---  
	NETWORK_HAS_ENTITY_BEEN_REGISTERED_WITH_THIS_THREAD = function(entity) return invoker.call(0xB07D3185E11657A5, entity).bool end,
	---  
	NETWORK_GET_NETWORK_ID_FROM_ENTITY = function(entity) return invoker.call(0xA11700682F3AD45C, entity).int end,
	---  
	NETWORK_GET_ENTITY_FROM_NETWORK_ID = function(netId) return invoker.call(0xCE4E5D9B0A4FF560, netId).int end,
	---  
	NETWORK_GET_ENTITY_IS_NETWORKED = function(entity) return invoker.call(0xC7827959479DCC78, entity).bool end,
	---  
	NETWORK_GET_ENTITY_IS_LOCAL = function(entity) return invoker.call(0x0991549DE4D64762, entity).bool end,
	---  
	NETWORK_REGISTER_ENTITY_AS_NETWORKED = function(entity) invoker.call(0x06FAACD625D80CAA, entity) end,
	---  
	NETWORK_UNREGISTER_NETWORKED_ENTITY = function(entity) invoker.call(0x7368E683BB9038D6, entity) end,
	---  
	NETWORK_DOES_NETWORK_ID_EXIST = function(netId) return invoker.call(0x38CE16C96BD11344, netId).bool end,
	---  
	NETWORK_DOES_ENTITY_EXIST_WITH_NETWORK_ID = function(netId) return invoker.call(0x18A47D074708FD68, netId).bool end,
	---  
	NETWORK_REQUEST_CONTROL_OF_NETWORK_ID = function(netId) return invoker.call(0xA670B3662FAFFBD0, netId).bool end,
	---  
	NETWORK_HAS_CONTROL_OF_NETWORK_ID = function(netId) return invoker.call(0x4D36070FE0215186, netId).bool end,
	---Returns true if the specified network id is controlled by someone else.  
	NETWORK_IS_NETWORK_ID_REMOTELY_CONTROLLED = function(netId) return invoker.call(0x7242F8B741CE1086, netId).bool end,
	---  
	NETWORK_REQUEST_CONTROL_OF_ENTITY = function(entity) return invoker.call(0xB69317BF5E782347, entity).bool end,
	---  
	NETWORK_REQUEST_CONTROL_OF_DOOR = function(doorID) return invoker.call(0x870DDFD5A4A796E4, doorID).bool end,
	---  
	NETWORK_HAS_CONTROL_OF_ENTITY = function(entity) return invoker.call(0x01BF60A500E28887, entity).bool end,
	---  
	NETWORK_HAS_CONTROL_OF_PICKUP = function(pickup) return invoker.call(0x5BC9495F0B3B6FA6, pickup).bool end,
	---  
	NETWORK_HAS_CONTROL_OF_DOOR = function(doorHash) return invoker.call(0xCB3C68ADB06195DF, doorHash).bool end,
	---  
	NETWORK_IS_DOOR_NETWORKED = function(doorHash) return invoker.call(0xC01E93FAC20C3346, doorHash).bool end,
	---calls from vehicle to net.  
	---  
	VEH_TO_NET = function(vehicle) return invoker.call(0xB4C94523F023419C, vehicle).int end,
	---gets the network id of a ped  
	PED_TO_NET = function(ped) return invoker.call(0x0EDEC3C276198689, ped).int end,
	---Lets objects spawn online simply do it like this:  
	---  
	---int createdObject = OBJ_TO_NET(CREATE_OBJECT_NO_OFFSET(oball, pCoords.x, pCoords.y, pCoords.z, 1, 0, 0));  
	OBJ_TO_NET = function(object) return invoker.call(0x99BFDC94A603E541, object).int end,
	---  
	NET_TO_VEH = function(netHandle) return invoker.call(0x367B936610BA360C, netHandle).int end,
	---gets the ped id of a network id  
	NET_TO_PED = function(netHandle) return invoker.call(0xBDCD95FC216A8B3E, netHandle).int end,
	---gets the object id of a network id  
	NET_TO_OBJ = function(netHandle) return invoker.call(0xD8515F5FEA14CB3F, netHandle).int end,
	---gets the entity id of a network id  
	NET_TO_ENT = function(netHandle) return invoker.call(0xBFFEAB45A9A9094A, netHandle).int end,
	---  
	NETWORK_GET_LOCAL_HANDLE = function(gamerHandle, gamerHandleSize) invoker.call(0xE86051786B66CD8E, gamerHandle, gamerHandleSize) end,
	---  
	NETWORK_HANDLE_FROM_USER_ID = function(userId, gamerHandle, gamerHandleSize) invoker.call(0xDCD51DD8F87AEC5C, userId, gamerHandle, gamerHandleSize) end,
	---  
	NETWORK_HANDLE_FROM_MEMBER_ID = function(memberId, gamerHandle, gamerHandleSize) invoker.call(0xA0FD21BED61E5C4C, memberId, gamerHandle, gamerHandleSize) end,
	---  
	NETWORK_HANDLE_FROM_PLAYER = function(player, gamerHandle, gamerHandleSize) invoker.call(0x388EB2B86C73B6B3, player, gamerHandle, gamerHandleSize) end,
	---  
	NETWORK_HASH_FROM_PLAYER_HANDLE = function(player) return invoker.call(0xBC1D768F2F5D6C05, player).int end,
	---  
	NETWORK_HASH_FROM_GAMER_HANDLE = function(gamerHandle) return invoker.call(0x58575AC3CF2CA8EC, gamerHandle).int end,
	---  
	NETWORK_HANDLE_FROM_FRIEND = function(friendIndex, gamerHandle, gamerHandleSize) invoker.call(0xD45CB817D7E177D2, friendIndex, gamerHandle, gamerHandleSize) end,
	---  
	NETWORK_GAMERTAG_FROM_HANDLE_START = function(gamerHandle) return invoker.call(0x9F0C0A981D73FA56, gamerHandle).bool end,
	---  
	NETWORK_GAMERTAG_FROM_HANDLE_PENDING = function() return invoker.call(0xB071E27958EF4CF0).bool end,
	---  
	NETWORK_GAMERTAG_FROM_HANDLE_SUCCEEDED = function() return invoker.call(0xFD00798DBA7523DD).bool end,
	---  
	NETWORK_GET_GAMERTAG_FROM_HANDLE = function(gamerHandle) return invoker.call(0x426141162EBE5CDB, gamerHandle).str end,
	---Hardcoded to return -1.  
	NETWORK_DISPLAYNAMES_FROM_HANDLES_START = function(p0, p1) return invoker.call(0xD66C9E72B3CC4982, p0, p1).int end,
	---This function is hard-coded to always return 0.  
	NETWORK_GET_DISPLAYNAMES_FROM_HANDLES = function(p0, p1, p2) return invoker.call(0x58CC181719256197, p0, p1, p2).int end,
	---  
	NETWORK_ARE_HANDLES_THE_SAME = function(gamerHandle1, gamerHandle2) return invoker.call(0x57DBA049E110F217, gamerHandle1, gamerHandle2).bool end,
	---  
	NETWORK_IS_HANDLE_VALID = function(gamerHandle, gamerHandleSize) return invoker.call(0x6F79B93B0A8E4133, gamerHandle, gamerHandleSize).bool end,
	---  
	NETWORK_GET_PLAYER_FROM_GAMER_HANDLE = function(gamerHandle) return invoker.call(0xCE5F689CF5A0A49D, gamerHandle).int end,
	---  
	NETWORK_MEMBER_ID_FROM_GAMER_HANDLE = function(gamerHandle) return invoker.call(0xC82630132081BB6F, gamerHandle).str end,
	---  
	NETWORK_IS_GAMER_IN_MY_SESSION = function(gamerHandle) return invoker.call(0x0F10B05DDF8D16E9, gamerHandle).bool end,
	---  
	NETWORK_SHOW_PROFILE_UI = function(gamerHandle) invoker.call(0x859ED1CEA343FCA8, gamerHandle) end,
	---Returns the name of a given player. Returns "**Invalid**" if rlGamerInfo of the given player cannot be retrieved or the player doesn't exist.  
	NETWORK_PLAYER_GET_NAME = function(player) return invoker.call(0x7718D2E2060837D2, player).str end,
	---Returns a string of the player's Rockstar Id.   
	---Takes a 24 char buffer. Returns the buffer or "**Invalid**" if rlGamerInfo of the given player cannot be retrieved or the player doesn't exist.  
	NETWORK_PLAYER_GET_USERID = function(player, userID) return invoker.call(0x4927FC39CD0869A0, player, userID).str end,
	---Checks if a specific value (BYTE) in CNetGamePlayer is nonzero.  
	---Returns always false in Singleplayer.  
	---  
	---No longer used for dev checks since first mods were released on PS3 & 360.  
	---R* now checks with the IS_DLC_PRESENT native for the dlc hash 2532323046,  
	---if that is present it will unlock dev stuff.  
	NETWORK_PLAYER_IS_ROCKSTAR_DEV = function(player) return invoker.call(0x544ABDDA3B409B6D, player).bool end,
	---  
	NETWORK_PLAYER_INDEX_IS_CHEATER = function(player) return invoker.call(0x565E430DB3B05BEC, player).bool end,
	---  
	NETWORK_ENTITY_GET_OBJECT_ID = function(entity) return invoker.call(0x815F18AD865F057F, entity).int end,
	---I've had this return the player's ped handle sometimes, but also other random entities.  
	---Whatever p0 is, it's at least not synced to other players.  
	---At least not all the time, some p0 values actually output the same entity, (different handle of course, but same entity).  
	---But another p0 value may return an entity for player x, but not for player y (it'll just return -1 even if the entity exists on both clients).  
	---  
	---Returns an entity handle or -1, value changes based on p0's value.  
	NETWORK_GET_ENTITY_FROM_OBJECT_ID = function(p0) return invoker.call(0x37D5F739FD494675, p0).int end,
	---  
	NETWORK_IS_INACTIVE_PROFILE = function(p0) return invoker.call(0x7E58745504313A2E, p0).bool end,
	---Returns the name from given friend gamer handle.  
	_NETWORK_LOAD_GAMER_DISPLAY_NAME = function(gamerHandle) return invoker.call(0x338ECE3637937BC2, gamerHandle).str end,
	---  
	NETWORK_GET_MAX_FRIENDS = function() return invoker.call(0xAFEBB0D5D8F687D2).int end,
	---  
	NETWORK_GET_FRIEND_COUNT = function() return invoker.call(0x203F1CFD823B27A4).int end,
	---  
	NETWORK_GET_FRIEND_NAME = function(friendIndex) return invoker.call(0xE11EBBB2A783FE8B, friendIndex).str end,
	---  
	NETWORK_GET_FRIEND_DISPLAY_NAME = function(friendIndex) return invoker.call(0x4164F227D052E293, friendIndex).str end,
	---  
	NETWORK_IS_FRIEND_ONLINE = function(name) return invoker.call(0x425A44533437B64D, name).bool end,
	---  
	NETWORK_IS_FRIEND_HANDLE_ONLINE = function(gamerHandle) return invoker.call(0x87EB7A3FFCB314DB, gamerHandle).bool end,
	---In scripts R* calls 'NETWORK_GET_FRIEND_NAME' in this param.  
	NETWORK_IS_FRIEND_IN_SAME_TITLE = function(friendName) return invoker.call(0x2EA9A3BEDF3F17B8, friendName).bool end,
	---  
	NETWORK_IS_FRIEND_IN_MULTIPLAYER = function(friendName) return invoker.call(0x57005C18827F3A28, friendName).bool end,
	---  
	NETWORK_IS_FRIEND = function(gamerHandle) return invoker.call(0x1A24A179F9B31654, gamerHandle).bool end,
	---This function is hard-coded to always return 0.  
	NETWORK_IS_PENDING_FRIEND = function(p0) return invoker.call(0x0BE73DA6984A6E33, p0).bool end,
	---  
	NETWORK_IS_ADDING_FRIEND = function() return invoker.call(0x6EA101606F6E4D81).bool end,
	---  
	NETWORK_ADD_FRIEND = function(gamerHandle, message) return invoker.call(0x8E02D73914064223, gamerHandle, message).bool end,
	---  
	NETWORK_IS_FRIEND_INDEX_ONLINE = function(friendIndex) return invoker.call(0xBAD8F2A42B844821, friendIndex).bool end,
	---  
	NETWORK_SET_PLAYER_IS_PASSIVE = function(toggle) invoker.call(0x1B857666604B1A74, toggle) end,
	---  
	NETWORK_GET_PLAYER_OWNS_WAYPOINT = function(player) return invoker.call(0x82377B65E943F72D, player).bool end,
	---  
	NETWORK_CAN_SET_WAYPOINT = function() return invoker.call(0xC927EC229934AF60).bool end,
	---  
	NETWORK_IGNORE_REMOTE_WAYPOINTS = function() invoker.call(0x4C2A9FDC22377075) end,
	---communicationType: 0 = VOICE; 1 = TEXT_CHAT; 2 = TEXT_MESSAGE; 3 = EMAIL; 4 = USER_CONTENT; 5 = USER_TEXT  
	_NETWORK_DOES_COMMUNICATION_GROUP_HAVE_PERMISSION = function(communicationType) return invoker.call(0xDBDF80673BBA3D65, communicationType).bool end,
	---  
	_NETWORK_DOES_COMMUNICATION_GROUP_HAVE_SETTINGS_ENABLED = function(communicationType) return invoker.call(0x20C12650830A64EC, communicationType).bool end,
	---Returns communicationGroupFlag  
	---communicationType: see 0xDBDF80673BBA3D65  
	---  
	---enum eCommunicationGroupFlag  
	---{  
	---	COMMUNICATION_GROUP_LOCAL_PLAYER = 1 << 0,  
	---	COMMUNICATION_GROUP_FRIENDS = 1 << 1,  
	---	COMMUNICATION_GROUP_SMALL_CREW = 1 << 2,  
	---	COMMUNICATION_GROUP_LARGE_CREW = 1 << 3,  
	---	COMMUNICATION_GROUP_RECENT_PLAYER = 1 << 4,  
	---	COMMUNICATION_GROUP_SAME_SESSION = 1 << 5,  
	---	COMMUNICATION_GROUP_SAME_TEAM = 1 << 6,  
	---	COMMUNICATION_GROUP_INVALID = 1 << 7,  
	---};  
	_NETWORK_GET_COMMUNICATION_GROUP_FLAGS = function(communicationType) return invoker.call(0x40DF02F371F40883, communicationType).int end,
	---  
	_NETWORK_GET_COMMUNICATION_GROUP_DEFAULT_FLAGS = function(communicationType) return invoker.call(0x97F35B898D2D067F, communicationType).int end,
	---  
	_NETWORK_GET_COMMUNICATION_GROUP_VALUE = function(communicationType) return invoker.call(0xBF66ACD9AE81A99F, communicationType).int end,
	---communicationType: see 0xDBDF80673BBA3D65  
	---communicationGroupFlag: see 0x40DF02F371F40883  
	_NETWORK_SET_COMMUNICATION_GROUP_FLAGS = function(communicationType, communicationGroupFlag) invoker.call(0xE549F846DE7D32D5, communicationType, communicationGroupFlag) end,
	---_NETWORK_HAS_P*  
	---checkType 3 is similar as using 0x9F633448E4C73207  
	_NETWORK_HAS_PLAYER_PASSED_CHECK_TYPE = function(checkType, gamerHandle) return invoker.call(0x62E29CDA11F9C230, checkType, gamerHandle).bool end,
	---  
	NETWORK_IS_PLAYER_ON_BLOCKLIST = function(gamerHandle) return invoker.call(0xAD4326FCA30D62F8, gamerHandle).bool end,
	---  
	NETWORK_SET_SCRIPT_AUTOMUTED = function(p0) return invoker.call(0xB309EBEA797E001F, p0).bool end,
	---  
	NETWORK_HAS_AUTOMUTE_OVERRIDE = function() return invoker.call(0x26F07DD83A5F7F98).bool end,
	---  
	NETWORK_HAS_HEADSET = function() return invoker.call(0xE870F9F1F7B4F1FA).bool end,
	---  
	NETWORK_SET_LOOK_AT_TALKERS = function(p0) invoker.call(0x7D395EA61622E116, p0) end,
	---  
	NETWORK_IS_PUSH_TO_TALK_ACTIVE = function() return invoker.call(0xC0D2AF00BCC234CA).bool end,
	---  
	NETWORK_GAMER_HAS_HEADSET = function(gamerHandle) return invoker.call(0xF2FD55CB574BCC55, gamerHandle).bool end,
	---  
	NETWORK_IS_GAMER_TALKING = function(gamerHandle) return invoker.call(0x71C33B22606CD88A, gamerHandle).bool end,
	---  
	NETWORK_PERMISSIONS_HAS_GAMER_RECORD = function(gamerHandle) return invoker.call(0x559EBF901A8C68E0, gamerHandle).bool end,
	---  
	NETWORK_CAN_COMMUNICATE_WITH_GAMER = function(gamerHandle) return invoker.call(0x8F5D1AD832AEB06C, gamerHandle).bool end,
	---  
	NETWORK_CAN_TEXT_CHAT_WITH_GAMER = function(gamerHandle) return invoker.call(0xA150A4F065806B1F, gamerHandle).bool end,
	---  
	NETWORK_IS_GAMER_MUTED_BY_ME = function(gamerHandle) return invoker.call(0xCE60DE011B6C7978, gamerHandle).bool end,
	---  
	NETWORK_AM_I_MUTED_BY_GAMER = function(gamerHandle) return invoker.call(0xDF02A2C93F1F26DA, gamerHandle).bool end,
	---  
	NETWORK_IS_GAMER_BLOCKED_BY_ME = function(gamerHandle) return invoker.call(0xE944C4F5AF1B5883, gamerHandle).bool end,
	---  
	NETWORK_AM_I_BLOCKED_BY_GAMER = function(gamerHandle) return invoker.call(0x15337C7C268A27B2, gamerHandle).bool end,
	---  
	NETWORK_CAN_VIEW_GAMER_USER_CONTENT = function(gamerHandle) return invoker.call(0xB57A49545BA53CE7, gamerHandle).bool end,
	---  
	NETWORK_HAS_VIEW_GAMER_USER_CONTENT_RESULT = function(gamerHandle) return invoker.call(0xCCA4318E1AB03F1F, gamerHandle).bool end,
	---NETWORK_CAN_*  
	_NETWORK_CAN_TEXT_FROM_GAMER_BE_VIEWED = function(gamerHandle) return invoker.call(0x9F633448E4C73207, gamerHandle).bool end,
	---  
	NETWORK_CAN_PLAY_MULTIPLAYER_WITH_GAMER = function(gamerHandle) return invoker.call(0x07DD29D5E22763F1, gamerHandle).bool end,
	---  
	NETWORK_CAN_GAMER_PLAY_MULTIPLAYER_WITH_ME = function(gamerHandle) return invoker.call(0x135F9B7B7ADD2185, gamerHandle).bool end,
	---  
	NETWORK_CAN_SEND_LOCAL_INVITE = function(gamerHandle) return invoker.call(0x021ABCBD98EC4320, gamerHandle).bool end,
	---  
	NETWORK_CAN_RECEIVE_LOCAL_INVITE = function(gamerHandle) return invoker.call(0x421E34C55F125964, gamerHandle).bool end,
	---returns true if someone is screaming or talking in a microphone  
	NETWORK_IS_PLAYER_TALKING = function(player) return invoker.call(0x031E11F3D447647E, player).bool end,
	---  
	NETWORK_PLAYER_HAS_HEADSET = function(player) return invoker.call(0x3FB99A8B08D18FD6, player).bool end,
	---  
	NETWORK_IS_PLAYER_MUTED_BY_ME = function(player) return invoker.call(0x8C71288AE68EDE39, player).bool end,
	---  
	NETWORK_AM_I_MUTED_BY_PLAYER = function(player) return invoker.call(0x9D6981DFC91A8604, player).bool end,
	---  
	NETWORK_IS_PLAYER_BLOCKED_BY_ME = function(player) return invoker.call(0x57AF1F8E27483721, player).bool end,
	---  
	NETWORK_AM_I_BLOCKED_BY_PLAYER = function(player) return invoker.call(0x87F395D957D4353D, player).bool end,
	---  
	NETWORK_GET_PLAYER_LOUDNESS = function(player) return invoker.call(0x21A1684A25C2867F, player).float end,
	---  
	NETWORK_SET_TALKER_PROXIMITY = function(value) invoker.call(0xCBF12D65F95AD686, value) end,
	---  
	NETWORK_GET_TALKER_PROXIMITY = function() return invoker.call(0x84F0F13120B4E098).float end,
	---  
	NETWORK_SET_VOICE_ACTIVE = function(toggle) invoker.call(0xBABEC9E69A91C57B, toggle) end,
	---  
	NETWORK_REMAIN_IN_GAME_CHAT = function(p0) invoker.call(0xCFEB46DCD7D8D5EB, p0) end,
	---  
	NETWORK_OVERRIDE_TRANSITION_CHAT = function(p0) invoker.call(0xAF66059A131AA269, p0) end,
	---  
	NETWORK_SET_TEAM_ONLY_CHAT = function(toggle) invoker.call(0xD5B4883AC32F24C3, toggle) end,
	---  
	NETWORK_SET_SCRIPT_CONTROLLING_TEAMS = function(p0) invoker.call(0x265559DA40B3F327, p0) end,
	---  
	NETWORK_SET_SAME_TEAM_AS_LOCAL_PLAYER = function(p0, p1) return invoker.call(0x4348BFDA56023A2F, p0, p1).bool end,
	---  
	NETWORK_OVERRIDE_TEAM_RESTRICTIONS = function(team, toggle) invoker.call(0x6F697A66CE78674E, team, toggle) end,
	---  
	NETWORK_SET_OVERRIDE_SPECTATOR_MODE = function(toggle) invoker.call(0x70DA3BF8DACD3210, toggle) end,
	---  
	NETWORK_SET_OVERRIDE_TUTORIAL_SESSION_CHAT = function(toggle) invoker.call(0x3C5C1E2C2FF814B1, toggle) end,
	---  
	NETWORK_SET_PROXIMITY_AFFECTS_TEAM = function(toggle) invoker.call(0x9D7AFCBF21C51712, toggle) end,
	---  
	NETWORK_SET_NO_SPECTATOR_CHAT = function(toggle) invoker.call(0xF46A1E03E8755980, toggle) end,
	---  
	NETWORK_SET_IGNORE_SPECTATOR_CHAT_LIMITS_SAME_TEAM = function(toggle) invoker.call(0x6A5D89D7769A40D8, toggle) end,
	---Could possibly bypass being muted or automatically muted  
	NETWORK_OVERRIDE_CHAT_RESTRICTIONS = function(player, toggle) invoker.call(0x3039AE5AD2C9C0C4, player, toggle) end,
	---This is used alongside the native,  
	---'NETWORK_OVERRIDE_RECEIVE_RESTRICTIONS'. Read its description for more info.  
	NETWORK_OVERRIDE_SEND_RESTRICTIONS = function(player, toggle) invoker.call(0x97DD4C5944CC2E6A, player, toggle) end,
	---  
	NETWORK_OVERRIDE_SEND_RESTRICTIONS_ALL = function(toggle) invoker.call(0x57B192B4D4AD23D5, toggle) end,
	---R* uses this to hear all player when spectating.   
	---It allows you to hear other online players when their chat is on none, crew and or friends  
	NETWORK_OVERRIDE_RECEIVE_RESTRICTIONS = function(player, toggle) invoker.call(0xDDF73E2B1FEC5AB4, player, toggle) end,
	---p0 is always false in scripts.  
	NETWORK_OVERRIDE_RECEIVE_RESTRICTIONS_ALL = function(toggle) invoker.call(0x0FF2862B61A58AF9, toggle) end,
	---  
	NETWORK_SET_VOICE_CHANNEL = function(channel) invoker.call(0xEF6212C2EFEF1A23, channel) end,
	---  
	NETWORK_CLEAR_VOICE_CHANNEL = function() invoker.call(0xE036A705F989E049) end,
	---  
	NETWORK_APPLY_VOICE_PROXIMITY_OVERRIDE = function(x, y, z) invoker.call(0xDBD2056652689917, x, y, z) end,
	---  
	NETWORK_CLEAR_VOICE_PROXIMITY_OVERRIDE = function() invoker.call(0xF03755696450470C) end,
	---  
	NETWORK_ENABLE_VOICE_BANDWIDTH_RESTRICTION = function(player) invoker.call(0x5E3AA4CA2B6FB0EE, player) end,
	---  
	NETWORK_DISABLE_VOICE_BANDWIDTH_RESTRICTION = function(player) invoker.call(0xCA575C391FEA25CC, player) end,
	---NETWORK_GET_M[A-U]  
	NETWORK_GET_MUTE_COUNT_FOR_PLAYER = function(p0, p1, p2) invoker.call(0xADB57E5B663CCA8B, p0, p1, p2) end,
	---  
	NETWORK_SET_SPECTATOR_TO_NON_SPECTATOR_TEXT_CHAT = function(toggle) invoker.call(0x8EF52ACAECC51D9C, toggle) end,
	---Same as _IS_TEXT_CHAT_ACTIVE, except it does not check if the text chat HUD component is initialized, and therefore may crash.  
	NETWORK_TEXT_CHAT_IS_TYPING = function() return invoker.call(0x5FCF4D7069B09026).bool end,
	---Starts a new singleplayer game (at the prologue).  
	SHUTDOWN_AND_LAUNCH_SINGLE_PLAYER_GAME = function() invoker.call(0x593850C16A36B692) end,
	---In singleplayer this will re-load your game.  
	---  
	---In FiveM / GTA:Online this disconnects you from the session, and starts loading single player, however you still remain connected to the server (only if you're the host, if you're not then you also (most likely) get disconnected from the server) and other players will not be able to join until you exit the game.  
	---  
	---You might need to DoScreenFadeIn and ShutdownLoadingScreen otherwise you probably won't end up loading into SP at all.  
	---  
	---Somewhat related note: opening the pause menu after loading into this 'singleplayer' mode crashes the game.  
	SHUTDOWN_AND_LOAD_MOST_RECENT_SAVE = function() return invoker.call(0x9ECA15ADFE141431).bool end,
	---  
	NETWORK_SET_FRIENDLY_FIRE_OPTION = function(toggle) invoker.call(0xF808475FA571D823, toggle) end,
	---This native does absolutely nothing, just a nullsub  
	NETWORK_SET_RICH_PRESENCE = function(p0, p1, p2, p3) invoker.call(0x1DCCACDCFC569362, p0, p1, p2, p3) end,
	---This native does absolutely nothing, just a nullsub  
	NETWORK_SET_RICH_PRESENCE_STRING = function(p0, textLabel) invoker.call(0x3E200C2BCF4164EB, p0, textLabel) end,
	---  
	NETWORK_GET_TIMEOUT_TIME = function() return invoker.call(0x5ED0356A0CE3A34F).int end,
	---p4 and p5 are always 0 in scripts  
	NETWORK_LEAVE_PED_BEHIND_BEFORE_WARP = function(player, x, y, z, p4, p5) invoker.call(0x9769F811D1785B03, player, x, y, z, p4, p5) end,
	---  
	NETWORK_LEAVE_PED_BEHIND_BEFORE_CUTSCENE = function(player, p1) invoker.call(0xBF22E0F32968E967, player, p1) end,
	---entity must be a valid entity; ped can be NULL  
	REMOVE_ALL_STICKY_BOMBS_FROM_ENTITY = function(entity, ped) invoker.call(0x715135F4B82AC90D, entity, ped) end,
	---  
	NETWORK_KEEP_ENTITY_COLLISION_DISABLED_AFTER_ANIM_SCENE = function(p0, p1) invoker.call(0x17C9E241111A674D, p0, p1) end,
	---  
	NETWORK_IS_ANY_PLAYER_NEAR = function(p0, p1, p2, p3, p4, p5, p6) return invoker.call(0x2E4C123D1C8A710E, p0, p1, p2, p3, p4, p5, p6).bool end,
	---  
	NETWORK_CLAN_SERVICE_IS_VALID = function() return invoker.call(0x579CCED0265D4896).bool end,
	---  
	NETWORK_CLAN_PLAYER_IS_ACTIVE = function(gamerHandle) return invoker.call(0xB124B57F571D8F18, gamerHandle).bool end,
	---bufferSize is 35 in the scripts.  
	---  
	---bufferSize is the elementCount of p0(desc), sizeof(p0) == 280 == p1*8 == 35 * 8, p2(netHandle) is obtained from NETWORK::NETWORK_HANDLE_FROM_PLAYER.  And no, I can't explain why 35 * sizeof(int) == 280 and not 140, but I'll get back to you on that.  
	---  
	---the answer is: because p0 an int64_t* / int64_t[35].  and FYI p2 is an int64_t[13]  
	---  
	---https://pastebin.com/cSZniHak  
	NETWORK_CLAN_PLAYER_GET_DESC = function(clanDesc, bufferSize, gamerHandle) return invoker.call(0xEEE6EACBE8874FBA, clanDesc, bufferSize, gamerHandle).bool end,
	---bufferSize is 35 in the scripts.  
	NETWORK_CLAN_IS_ROCKSTAR_CLAN = function(clanDesc, bufferSize) return invoker.call(0x7543BB439F63792B, clanDesc, bufferSize).bool end,
	---bufferSize is 35 in the scripts.  
	NETWORK_CLAN_GET_UI_FORMATTED_TAG = function(clanDesc, bufferSize, formattedTag) invoker.call(0xF45352426FF3A4F0, clanDesc, bufferSize, formattedTag) end,
	---  
	NETWORK_CLAN_GET_LOCAL_MEMBERSHIPS_COUNT = function() return invoker.call(0x1F471B79ACC90BEF).int end,
	---  
	NETWORK_CLAN_GET_MEMBERSHIP_DESC = function(memberDesc, p1) return invoker.call(0x48DE78AF2C8885B8, memberDesc, p1).bool end,
	---  
	NETWORK_CLAN_DOWNLOAD_MEMBERSHIP = function(gamerHandle) return invoker.call(0xA989044E70010ABE, gamerHandle).bool end,
	---  
	NETWORK_CLAN_DOWNLOAD_MEMBERSHIP_PENDING = function(p0) return invoker.call(0x5B9E023DC6EBEDC0, p0).bool end,
	---  
	NETWORK_CLAN_ANY_DOWNLOAD_MEMBERSHIP_PENDING = function() return invoker.call(0xB3F64A6A91432477).bool end,
	---  
	NETWORK_CLAN_REMOTE_MEMBERSHIPS_ARE_IN_CACHE = function(p0) return invoker.call(0xBB6E6FEE99D866B2, p0).bool end,
	---  
	NETWORK_CLAN_GET_MEMBERSHIP_COUNT = function(p0) return invoker.call(0xAAB11F6C4ADBC2C1, p0).int end,
	---  
	NETWORK_CLAN_GET_MEMBERSHIP_VALID = function(p0, p1) return invoker.call(0x48A59CF88D43DF0E, p0, p1).bool end,
	---  
	NETWORK_CLAN_GET_MEMBERSHIP = function(p0, clanMembership, p2) return invoker.call(0xC8BC2011F67B3411, p0, clanMembership, p2).bool end,
	---  
	NETWORK_CLAN_JOIN = function(clanDesc) return invoker.call(0x9FAAA4F4FC71F87F, clanDesc).bool end,
	---Only documented...  
	---  
	---Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json  
	NETWORK_CLAN_CREWINFO_GET_STRING_VALUE = function(animDict, animName) return invoker.call(0x729E3401F0430686, animDict, animName).bool end,
	---  
	NETWORK_CLAN_CREWINFO_GET_CREWRANKTITLE = function(p0, p1) return invoker.call(0x2B51EDBEFC301339, p0, p1).bool end,
	---  
	NETWORK_CLAN_HAS_CREWINFO_METADATA_BEEN_RECEIVED = function() return invoker.call(0xC32EA7A2F6CA7557).bool end,
	---  
	NETWORK_CLAN_GET_EMBLEM_TXD_NAME = function(netHandle, txdName) return invoker.call(0x5835D9CD92E83184, netHandle, txdName).bool end,
	---  
	NETWORK_CLAN_REQUEST_EMBLEM = function(p0) return invoker.call(0x13518FF1C6B28938, p0).bool end,
	---  
	NETWORK_CLAN_IS_EMBLEM_READY = function(p0, p1) return invoker.call(0xA134777FF7F33331, p0, p1).bool end,
	---  
	NETWORK_CLAN_RELEASE_EMBLEM = function(p0) invoker.call(0x113E6E3E50E286B0, p0) end,
	---  
	NETWORK_GET_PRIMARY_CLAN_DATA_CLEAR = function() return invoker.call(0x9AA46BADAD0E27ED).bool end,
	---  
	NETWORK_GET_PRIMARY_CLAN_DATA_CANCEL = function() invoker.call(0x042E4B70B93E6054) end,
	---  
	NETWORK_GET_PRIMARY_CLAN_DATA_START = function(p0, p1) return invoker.call(0xCE86D8191B762107, p0, p1).bool end,
	---  
	NETWORK_GET_PRIMARY_CLAN_DATA_PENDING = function() return invoker.call(0xB5074DB804E28CE7).bool end,
	---  
	NETWORK_GET_PRIMARY_CLAN_DATA_SUCCESS = function() return invoker.call(0x5B4F04F19376A0BA).bool end,
	---  
	NETWORK_GET_PRIMARY_CLAN_DATA_NEW = function(p0, p1) return invoker.call(0xC080FF658B2E41DA, p0, p1).bool end,
	---Whether or not another player is allowed to take control of the entity  
	SET_NETWORK_ID_CAN_MIGRATE = function(netId, toggle) invoker.call(0x299EEB23175895FC, netId, toggle) end,
	---  
	SET_NETWORK_ID_EXISTS_ON_ALL_MACHINES = function(netId, toggle) invoker.call(0xE05E81A888FA63C8, netId, toggle) end,
	---  
	SET_NETWORK_ID_ALWAYS_EXISTS_FOR_PLAYER = function(netId, player, toggle) invoker.call(0xA8A024587329F36A, netId, player, toggle) end,
	---"No Reassign" in CPhysicalScriptGameStateDataNode  
	SET_NETWORK_ID_CAN_BE_REASSIGNED = function(netId, toggle) invoker.call(0x9D724B400A7E8FFC, netId, toggle) end,
	---  
	NETWORK_SET_ENTITY_CAN_BLEND = function(entity, toggle) invoker.call(0xD830567D88A1E873, entity, toggle) end,
	---  
	NETWORK_SET_OBJECT_CAN_BLEND_WHEN_FIXED = function(object, toggle) invoker.call(0x0379DAF89BA09AA5, object, toggle) end,
	---if set to true other network players can't see it  
	---if set to false other network player can see it  
	---=========================================  
	---^^ I attempted this by grabbing an object with GET_ENTITY_PLAYER_IS_FREE_AIMING_AT and setting this naive no matter the toggle he could still see it.  
	---  
	---pc or last gen?  
	---  
	---^^ last-gen  
	NETWORK_SET_ENTITY_ONLY_EXISTS_FOR_PARTICIPANTS = function(entity, toggle) invoker.call(0xF1CA12B18AEF5298, entity, toggle) end,
	---  
	SET_NETWORK_ID_VISIBLE_IN_CUTSCENE = function(netId, p1, p2) invoker.call(0xA6928482543022B4, netId, p1, p2) end,
	---  
	SET_NETWORK_ID_VISIBLE_IN_CUTSCENE_HACK = function(netId, p1, p2) invoker.call(0x32EBD154CB6B8B99, netId, p1, p2) end,
	---  
	SET_NETWORK_ID_VISIBLE_IN_CUTSCENE_REMAIN_HACK = function(p0, p1, p2) invoker.call(0x76B3F29D3F967692, p0, p1, p2) end,
	---  
	SET_NETWORK_CUTSCENE_ENTITIES = function(toggle) invoker.call(0xAAA553E7DD28A457, toggle) end,
	---Getter for SET_NETWORK_CUTSCENE_ENTITIES.  
	ARE_CUTSCENE_ENTITIES_NETWORKED = function() return invoker.call(0x66D6A5E9C511214A).bool end,
	---  
	SET_NETWORK_ID_PASS_CONTROL_IN_TUTORIAL = function(netId, state) invoker.call(0x3FA36981311FA4FF, netId, state) end,
	---  
	IS_NETWORK_ID_OWNED_BY_PARTICIPANT = function(netId) return invoker.call(0xA1607996431332DF, netId).bool end,
	---  
	SET_REMOTE_PLAYER_VISIBLE_IN_CUTSCENE = function(player, locallyVisible) invoker.call(0x96320E6549DAE7B4, player, locallyVisible) end,
	---  
	SET_LOCAL_PLAYER_VISIBLE_IN_CUTSCENE = function(p0, p1) invoker.call(0xD1065D68947E7B6E, p0, p1) end,
	---  
	SET_LOCAL_PLAYER_INVISIBLE_LOCALLY = function(bIncludePlayersVehicle) invoker.call(0xE5F773C1A1D9D168, bIncludePlayersVehicle) end,
	---  
	SET_LOCAL_PLAYER_VISIBLE_LOCALLY = function(bIncludePlayersVehicle) invoker.call(0x7619364C82D3BF14, bIncludePlayersVehicle) end,
	---  
	SET_PLAYER_INVISIBLE_LOCALLY = function(player, bIncludePlayersVehicle) invoker.call(0x12B37D54667DB0B8, player, bIncludePlayersVehicle) end,
	---  
	SET_PLAYER_VISIBLE_LOCALLY = function(player, bIncludePlayersVehicle) invoker.call(0xFAA10F1FAFB11AF2, player, bIncludePlayersVehicle) end,
	---Hardcoded to not work in SP.  
	FADE_OUT_LOCAL_PLAYER = function(p0) invoker.call(0x416DBD4CD6ED8DD2, p0) end,
	---normal - transition like when your coming out of LSC  
	---slow - transition like when you walk into a mission  
	---   
	NETWORK_FADE_OUT_ENTITY = function(entity, normal, slow) invoker.call(0xDE564951F95E09ED, entity, normal, slow) end,
	---state - 0 does 5 fades  
	---state - 1 does 6 fades  
	---  
	---p3: setting to 1 made vehicle fade in slower, probably "slow" as per NETWORK_FADE_OUT_ENTITY  
	NETWORK_FADE_IN_ENTITY = function(entity, state, p2) invoker.call(0x1F4ED342ACEFE62D, entity, state, p2) end,
	---  
	NETWORK_IS_PLAYER_FADING = function(player) return invoker.call(0x631DC5DFF4B110E3, player).bool end,
	---  
	NETWORK_IS_ENTITY_FADING = function(entity) return invoker.call(0x422F32CC7E56ABAD, entity).bool end,
	---  
	IS_PLAYER_IN_CUTSCENE = function(player) return invoker.call(0xE73092F4157CD126, player).bool end,
	---  
	SET_ENTITY_VISIBLE_IN_CUTSCENE = function(p0, p1, p2) invoker.call(0xE0031D3C8F36AB82, p0, p1, p2) end,
	---Makes the provided entity visible for yourself for the current frame.  
	SET_ENTITY_LOCALLY_INVISIBLE = function(entity) invoker.call(0xE135A9FF3F5D05D8, entity) end,
	---  
	SET_ENTITY_LOCALLY_VISIBLE = function(entity) invoker.call(0x241E289B5C059EDC, entity) end,
	---  
	IS_DAMAGE_TRACKER_ACTIVE_ON_NETWORK_ID = function(netID) return invoker.call(0x6E192E33AD436366, netID).bool end,
	---  
	ACTIVATE_DAMAGE_TRACKER_ON_NETWORK_ID = function(netID, toggle) invoker.call(0xD45B1FFCCD52FF19, netID, toggle) end,
	---  
	IS_DAMAGE_TRACKER_ACTIVE_ON_PLAYER = function(player) return invoker.call(0xB2092A1EAA7FD45F, player).bool end,
	---  
	ACTIVATE_DAMAGE_TRACKER_ON_PLAYER = function(player, toggle) invoker.call(0xBEC0816FF5ACBCDA, player, toggle) end,
	---  
	IS_SPHERE_VISIBLE_TO_ANOTHER_MACHINE = function(p0, p1, p2, p3) return invoker.call(0xD82CF8E64C8729D8, p0, p1, p2, p3).bool end,
	---  
	IS_SPHERE_VISIBLE_TO_PLAYER = function(p0, p1, p2, p3, p4) return invoker.call(0xDC3A310219E5DA62, p0, p1, p2, p3, p4).bool end,
	---  
	RESERVE_NETWORK_MISSION_OBJECTS = function(amount) invoker.call(0x4E5C93BD0C32FBF8, amount) end,
	---  
	RESERVE_NETWORK_MISSION_PEDS = function(amount) invoker.call(0xB60FEBA45333D36F, amount) end,
	---  
	RESERVE_NETWORK_MISSION_VEHICLES = function(amount) invoker.call(0x76B02E21ED27A469, amount) end,
	---  
	RESERVE_LOCAL_NETWORK_MISSION_OBJECTS = function(amount) invoker.call(0x797F9C5E661D920E, amount) end,
	---  
	RESERVE_LOCAL_NETWORK_MISSION_PEDS = function(amount) invoker.call(0x2C8DF5D129595281, amount) end,
	---  
	RESERVE_LOCAL_NETWORK_MISSION_VEHICLES = function(amount) invoker.call(0x42613035157E4208, amount) end,
	---  
	CAN_REGISTER_MISSION_OBJECTS = function(amount) return invoker.call(0x800DD4721A8B008B, amount).bool end,
	---  
	CAN_REGISTER_MISSION_PEDS = function(amount) return invoker.call(0xBCBF4FEF9FA5D781, amount).bool end,
	---  
	CAN_REGISTER_MISSION_VEHICLES = function(amount) return invoker.call(0x7277F1F2E085EE74, amount).bool end,
	---  
	CAN_REGISTER_MISSION_PICKUPS = function(amount) return invoker.call(0x0A49D1CB6E34AF72, amount).bool end,
	---  
	CAN_REGISTER_MISSION_DOORS = function(p0) return invoker.call(0xE16AA70CE9BEEDC3, p0).bool end,
	---  
	CAN_REGISTER_MISSION_ENTITIES = function(ped_amt, vehicle_amt, object_amt, pickup_amt) return invoker.call(0x69778E7564BADE6D, ped_amt, vehicle_amt, object_amt, pickup_amt).bool end,
	---p0 appears to be for MP  
	GET_NUM_RESERVED_MISSION_OBJECTS = function(p0, p1) return invoker.call(0xAA81B5F10BC43AC2, p0, p1).int end,
	---p0 appears to be for MP  
	GET_NUM_RESERVED_MISSION_PEDS = function(p0, p1) return invoker.call(0x1F13D5AE5CB17E17, p0, p1).int end,
	---p0 appears to be for MP  
	GET_NUM_RESERVED_MISSION_VEHICLES = function(p0, p1) return invoker.call(0xCF3A965906452031, p0, p1).int end,
	---  
	GET_NUM_CREATED_MISSION_OBJECTS = function(p0) return invoker.call(0x12B6281B6C6706C0, p0).int end,
	---  
	GET_NUM_CREATED_MISSION_PEDS = function(p0) return invoker.call(0xCB215C4B56A7FAE7, p0).int end,
	---  
	GET_NUM_CREATED_MISSION_VEHICLES = function(p0) return invoker.call(0x0CD9AB83489430EA, p0).int end,
	---  
	GET_RESERVED_MISSION_ENTITIES_IN_AREA = function(x, y, z, p3, out1, out2, out3) invoker.call(0xE42D626EEC94E5D9, x, y, z, p3, out1, out2, out3) end,
	---  
	GET_MAX_NUM_NETWORK_OBJECTS = function() return invoker.call(0xC7BE335216B5EC7C).int end,
	---  
	GET_MAX_NUM_NETWORK_PEDS = function() return invoker.call(0x0C1F7D49C39D2289).int end,
	---  
	GET_MAX_NUM_NETWORK_VEHICLES = function() return invoker.call(0x0AFCE529F69B21FF).int end,
	---  
	GET_MAX_NUM_NETWORK_PICKUPS = function() return invoker.call(0xA72835064DD63E4C).int end,
	---  
	NETWORK_SET_OBJECT_SCOPE_DISTANCE = function(object, range) invoker.call(0xBA7F0B77D80A4EB7, object, range) end,
	---  
	NETWORK_ALLOW_CLONING_WHILE_IN_TUTORIAL = function(p0, p1) invoker.call(0x0F1A4B45B7693B95, p0, p1) end,
	---A value between 1.0 and 5.0  
	NETWORK_SET_TASK_CUTSCENE_INSCOPE_MULTIPLER = function(multiplier) invoker.call(0xC6FCEE21C6FCEE21, multiplier) end,
	---  
	_NETWORK_HIDE_ENTITY_IN_TUTORIAL_SESSION = function(netHandle, hide) invoker.call(0xCFE359CCCFE359CC, netHandle, hide) end,
	---  
	GET_NETWORK_TIME = function() return invoker.call(0x7A5487FE9FAA6B48).int end,
	---Returns the same value as GET_NETWORK_TIME in freemode, but as opposed to `GET_NETWORK_TIME` it always gets the most recent time, instead of once per tick.  
	---Could be used for benchmarking since it can return times in ticks.  
	GET_NETWORK_TIME_ACCURATE = function() return invoker.call(0x89023FBBF9200E9F).int end,
	---  
	HAS_NETWORK_TIME_STARTED = function() return invoker.call(0x46718ACEEDEAFC84).bool end,
	---Adds the first argument to the second.  
	GET_TIME_OFFSET = function(timeA, timeB) return invoker.call(0x017008CCDAD48503, timeA, timeB).int end,
	---Subtracts the second argument from the first, then returns whether the result is negative.  
	IS_TIME_LESS_THAN = function(timeA, timeB) return invoker.call(0xCB2CF5148012C8D0, timeA, timeB).bool end,
	---Subtracts the first argument from the second, then returns whether the result is negative.  
	IS_TIME_MORE_THAN = function(timeA, timeB) return invoker.call(0xDE350F8651E4346C, timeA, timeB).bool end,
	---Returns true if the two times are equal; otherwise returns false.  
	IS_TIME_EQUAL_TO = function(timeA, timeB) return invoker.call(0xF5BC95857BD6D512, timeA, timeB).bool end,
	---Subtracts the second argument from the first.  
	GET_TIME_DIFFERENCE = function(timeA, timeB) return invoker.call(0xA2C6FC031D46FFF0, timeA, timeB).int end,
	---  
	GET_TIME_AS_STRING = function(time) return invoker.call(0x9E23B1777A927DAD, time).str end,
	---Same as GET_CLOUD_TIME_AS_INT but returns the value as a hex string (%I64X).  
	GET_CLOUD_TIME_AS_STRING = function() return invoker.call(0xF12E6CD06C73D69E).str end,
	---Returns POSIX timestamp, an int representing the cloud time.  
	GET_CLOUD_TIME_AS_INT = function() return invoker.call(0x9A73240B49945C76).int end,
	---Takes the specified time and writes it to the structure specified in the second argument.  
	---  
	---struct date_time  
	---{  
	---    int year;  
	---    int PADDING1;  
	---    int month;  
	---    int PADDING2;  
	---    int day;  
	---    int PADDING3;  
	---    int hour;  
	---    int PADDING4;  
	---    int minute;  
	---    int PADDING5;  
	---    int second;  
	---    int PADDING6;  
	---};  
	CONVERT_POSIX_TIME = function(posixTime, timeStructure) invoker.call(0xAC97AF97FA68E5D5, posixTime, timeStructure) end,
	---  
	NETWORK_SET_IN_SPECTATOR_MODE = function(toggle, playerPed) invoker.call(0x423DE3854BB50894, toggle, playerPed) end,
	---  
	NETWORK_SET_IN_SPECTATOR_MODE_EXTENDED = function(toggle, playerPed, p2) invoker.call(0x419594E137637120, toggle, playerPed, p2) end,
	---  
	NETWORK_SET_IN_FREE_CAM_MODE = function(toggle) invoker.call(0xFC18DB55AE19E046, toggle) end,
	---  
	NETWORK_SET_ANTAGONISTIC_TO_PLAYER = function(toggle, player) invoker.call(0x5C707A667DF8B9FA, toggle, player) end,
	---  
	NETWORK_IS_IN_SPECTATOR_MODE = function() return invoker.call(0x048746E388762E11).bool end,
	---  
	NETWORK_SET_IN_MP_CUTSCENE = function(p0, p1) invoker.call(0x9CA5DE655269FEC4, p0, p1) end,
	---  
	NETWORK_IS_IN_MP_CUTSCENE = function() return invoker.call(0x6CC27C9FA2040220).bool end,
	---  
	NETWORK_IS_PLAYER_IN_MP_CUTSCENE = function(player) return invoker.call(0x63F9EE203C3619F2, player).bool end,
	---  
	NETWORK_HIDE_PROJECTILE_IN_CUTSCENE = function() invoker.call(0xFAC18E7356BD3210) end,
	---  
	SET_NETWORK_VEHICLE_RESPOT_TIMER = function(netId, time, p2, p3) invoker.call(0xEC51713AB6EC36E8, netId, time, p2, p3) end,
	---  
	IS_NETWORK_VEHICLE_RUNNING_RESPOT_TIMER = function(networkID) return invoker.call(0xDD7CEF5B3A4DA8A6, networkID).bool end,
	---  
	SET_NETWORK_VEHICLE_AS_GHOST = function(vehicle, toggle) invoker.call(0x6274C4712850841E, vehicle, toggle) end,
	---rage::netBlenderLinInterp::GetPositionMaxForUpdateLevel  
	SET_NETWORK_VEHICLE_MAX_POSITION_DELTA_MULTIPLIER = function(vehicle, multiplier) invoker.call(0xA2A707979FE754DC, vehicle, multiplier) end,
	---Enables a periodic ShapeTest within the NetBlender and invokes rage::netBlenderLinInterp::GoStraightToTarget (or some functional wrapper).  
	SET_NETWORK_ENABLE_HIGH_SPEED_EDGE_FALL_DETECTION = function(vehicle, toggle) invoker.call(0x838DA0936A24ED4D, vehicle, toggle) end,
	---  
	SET_LOCAL_PLAYER_AS_GHOST = function(toggle, p1) invoker.call(0x5FFE9B4144F9712F, toggle, p1) end,
	---  
	IS_ENTITY_A_GHOST = function(entity) return invoker.call(0x21D04D7BC538C146, entity).bool end,
	---  
	SET_NON_PARTICIPANTS_OF_THIS_SCRIPT_AS_GHOSTS = function(p0) invoker.call(0x13F1FCB111B820B0, p0) end,
	---Enables ghosting between specific players  
	SET_REMOTE_PLAYER_AS_GHOST = function(player, p1) invoker.call(0xA7C511FA1C5BDA38, player, p1) end,
	---Must be a value between 1 and 254  
	SET_GHOST_ALPHA = function(alpha) invoker.call(0x658500AE6D723A7E, alpha) end,
	---Resets the entity ghost alpha to the default value (128)  
	RESET_GHOST_ALPHA = function() invoker.call(0x17330EBF2F2124A8) end,
	---  
	SET_ENTITY_GHOSTED_FOR_GHOST_PLAYERS = function(entity, toggle) invoker.call(0x4BA166079D658ED4, entity, toggle) end,
	---  
	SET_INVERT_GHOSTING = function(p0) invoker.call(0xD7B6C73CAD419BCF, p0) end,
	---  
	IS_ENTITY_IN_GHOST_COLLISION = function(entity) return invoker.call(0x7EF7649B64D7FF10, entity).bool end,
	---reportData includes mc, ceo, yacht and licenceplate names  
	_SET_FREEMODE_REPORT_DATA = function(gamerHandle, reportData) invoker.call(0x527803286A8B6C81, gamerHandle, reportData) end,
	---  
	IS_OBJECT_REASSIGNMENT_IN_PROGRESS = function() return invoker.call(0x28123C8B056CC8AA).bool end,
	---  
	USE_PLAYER_COLOUR_INSTEAD_OF_TEAM_COLOUR = function(toggle) invoker.call(0x77758139EC9B66C7, toggle) end,
	---  
	NETWORK_CREATE_SYNCHRONISED_SCENE = function(x, y, z, xRot, yRot, zRot, rotationOrder, useOcclusionPortal, looped, p9, animTime, p11) return invoker.call(0x7CD6BC4C2BBDD526, x, y, z, xRot, yRot, zRot, rotationOrder, useOcclusionPortal, looped, p9, animTime, p11).int end,
	---  
	NETWORK_ADD_PED_TO_SYNCHRONISED_SCENE = function(ped, netScene, animDict, animnName, speed, speedMultiplier, duration, flag, playbackRate, p9) invoker.call(0x742A637471BCECD9, ped, netScene, animDict, animnName, speed, speedMultiplier, duration, flag, playbackRate, p9) end,
	---  
	NETWORK_ADD_PED_TO_SYNCHRONISED_SCENE_WITH_IK = function(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9) invoker.call(0xA5EAFE473E45C442, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9) end,
	---  
	NETWORK_ADD_ENTITY_TO_SYNCHRONISED_SCENE = function(entity, netScene, animDict, animName, speed, speedMulitiplier, flag) invoker.call(0xF2404D68CBC855FA, entity, netScene, animDict, animName, speed, speedMulitiplier, flag) end,
	---Similar structure as NETWORK_ADD_ENTITY_TO_SYNCHRONISED_SCENE but it includes this time a hash.  
	---In casino_slots it is used one time in a synced scene involving a ped and the slot machine?  
	NETWORK_ADD_MAP_ENTITY_TO_SYNCHRONISED_SCENE = function(netScene, modelHash, x, y, z, p5, p6, p7, p8, flags) invoker.call(0x45F35C0EDC33B03B, netScene, modelHash, x, y, z, p5, p6, p7, p8, flags) end,
	---  
	NETWORK_ADD_SYNCHRONISED_SCENE_CAMERA = function(netScene, animDict, animName) invoker.call(0xCF8BD3B0BD6D42D7, netScene, animDict, animName) end,
	---  
	NETWORK_ATTACH_SYNCHRONISED_SCENE_TO_ENTITY = function(netScene, entity, bone) invoker.call(0x478DCBD2A98B705A, netScene, entity, bone) end,
	---  
	NETWORK_START_SYNCHRONISED_SCENE = function(netScene) invoker.call(0x9A1B3FCDB36C8697, netScene) end,
	---  
	NETWORK_STOP_SYNCHRONISED_SCENE = function(netScene) invoker.call(0xC254481A4574CB2F, netScene) end,
	---  
	NETWORK_GET_LOCAL_SCENE_FROM_NETWORK_ID = function(netId) return invoker.call(0x02C40BF885C567B6, netId).int end,
	---  
	NETWORK_FORCE_LOCAL_USE_OF_SYNCED_SCENE_CAMERA = function(netScene) invoker.call(0xC9B43A33D09CADA7, netScene) end,
	---  
	NETWORK_ALLOW_REMOTE_SYNCED_SCENE_LOCAL_PLAYER_REQUESTS = function(p0) invoker.call(0x144DA052257AE7D8, p0) end,
	---p0 is always 0. p1 is pointing to a global.  
	NETWORK_FIND_LARGEST_BUNCH_OF_PLAYERS = function(p0, p1) return invoker.call(0xFB1F9381E80FA13F, p0, p1).bool end,
	---One of the first things it does is get the players ped.  
	---Then it calls a function that is used in some tasks and ped based functions.  
	---p5, p6, p7 is another coordinate (or zero), often related to `GET_BLIP_COORDS, in the decompiled scripts.  
	NETWORK_START_RESPAWN_SEARCH_FOR_PLAYER = function(player, x, y, z, radius, p5, p6, p7, flags) return invoker.call(0x5A6FFA2433E2F14C, player, x, y, z, radius, p5, p6, p7, flags).bool end,
	---p8, p9, p10 is another coordinate, or zero, often related to `GET_BLIP_COORDS in the decompiled scripts.  
	NETWORK_START_RESPAWN_SEARCH_IN_ANGLED_AREA_FOR_PLAYER = function(player, x1, y1, z1, x2, y2, z2, width, p8, p9, p10, flags) return invoker.call(0x4BA92A18502BCA61, player, x1, y1, z1, x2, y2, z2, width, p8, p9, p10, flags).bool end,
	---  
	NETWORK_QUERY_RESPAWN_RESULTS = function(p0) return invoker.call(0x3C891A251567DFCE, p0).int end,
	---  
	NETWORK_CANCEL_RESPAWN_SEARCH = function() invoker.call(0xFB8F2A6F3DF08CBE) end,
	---Based on scripts such as in freemode.c how they call their vars vVar and fVar the 2nd and 3rd param it a Vector3 and Float, but the first is based on get_random_int_in_range..  
	NETWORK_GET_RESPAWN_RESULT = function(randomInt, coordinates, heading) invoker.call(0x371EA43692861CF1, randomInt, coordinates, heading) end,
	---  
	NETWORK_GET_RESPAWN_RESULT_FLAGS = function(p0) return invoker.call(0x6C34F1208B8923FD, p0).int end,
	---  
	NETWORK_START_SOLO_TUTORIAL_SESSION = function() invoker.call(0x17E0198B3882C2CB) end,
	---teamId must be < 3, instanceId must be < 64  
	NETWORK_ALLOW_GANG_TO_JOIN_TUTORIAL_SESSION = function(teamId, instanceId) invoker.call(0xFB680D403909DC70, teamId, instanceId) end,
	---  
	NETWORK_END_TUTORIAL_SESSION = function() invoker.call(0xD0AFAFF5A51D72F7) end,
	---  
	NETWORK_IS_IN_TUTORIAL_SESSION = function() return invoker.call(0xADA24309FE08DACF).bool end,
	---  
	NETWORK_WAITING_POP_CLEAR_TUTORIAL_SESSION = function() return invoker.call(0xB37E4E6A2388CA7B).bool end,
	---  
	NETWORK_IS_TUTORIAL_SESSION_CHANGE_PENDING = function() return invoker.call(0x35F0B98A8387274D).bool end,
	---  
	NETWORK_GET_PLAYER_TUTORIAL_SESSION_INSTANCE = function(player) return invoker.call(0x3B39236746714134, player).int end,
	---  
	NETWORK_ARE_PLAYERS_IN_SAME_TUTORIAL_SESSION = function(player, index) return invoker.call(0x9DE986FC9A87C474, player, index).bool end,
	---  
	NETWORK_BLOCK_PROXY_MIGRATION_BETWEEN_TUTORIAL_SESSIONS = function(p0) invoker.call(0xFEA7A352DDB34D52, p0) end,
	---  
	NETWORK_CONCEAL_PLAYER = function(player, toggle, p2) invoker.call(0xBBDF066252829606, player, toggle, p2) end,
	---  
	NETWORK_IS_PLAYER_CONCEALED = function(player) return invoker.call(0x919B3C98ED8292F9, player).bool end,
	---  
	NETWORK_CONCEAL_ENTITY = function(entity, toggle) invoker.call(0x1632BE0AC1E62876, entity, toggle) end,
	---Note: This only works for vehicles, which appears to be a bug (since the setter _does_ work for every entity type and the name is 99% correct).  
	NETWORK_IS_ENTITY_CONCEALED = function(entity) return invoker.call(0x71302EC70689052A, entity).bool end,
	---Works in Singleplayer too.  
	---Passing wrong data (e.g. hours above 23) will cause the game to crash.  
	NETWORK_OVERRIDE_CLOCK_TIME = function(hours, minutes, seconds) invoker.call(0xE679E3E06E363892, hours, minutes, seconds) end,
	---  
	NETWORK_OVERRIDE_CLOCK_RATE = function(ms) invoker.call(0x42BF1D2E723B6D7E, ms) end,
	---  
	NETWORK_CLEAR_CLOCK_TIME_OVERRIDE = function() invoker.call(0xD972DF67326F966E) end,
	---Does nothing in final builds.  
	NETWORK_SYNC_CLOCK_TIME_OVERRIDE = function() invoker.call(0xCBD02360C5E16871) end,
	---  
	NETWORK_IS_CLOCK_TIME_OVERRIDDEN = function() return invoker.call(0xD7C95D322FF57522).bool end,
	---  
	NETWORK_ADD_ENTITY_AREA = function(x1, y1, z1, x2, y2, z2) return invoker.call(0x494C8FB299290269, x1, y1, z1, x2, y2, z2).int end,
	---To remove, see: NETWORK_REMOVE_ENTITY_AREA  
	---See IS_POINT_IN_ANGLED_AREA for the definition of an angled area.  
	NETWORK_ADD_ENTITY_ANGLED_AREA = function(x1, y1, z1, x2, y2, z2, width) return invoker.call(0x376C6375BA60293A, x1, y1, z1, x2, y2, z2, width).int end,
	---  
	NETWORK_ADD_CLIENT_ENTITY_AREA = function(x1, y1, z1, x2, y2, z2) return invoker.call(0x25B99872D588A101, x1, y1, z1, x2, y2, z2).int end,
	---  
	NETWORK_ADD_CLIENT_ENTITY_ANGLED_AREA = function(x1, y1, z1, x2, y2, z2, radius) return invoker.call(0x2B1C623823DB0D9D, x1, y1, z1, x2, y2, z2, radius).int end,
	---  
	NETWORK_REMOVE_ENTITY_AREA = function(areaHandle) return invoker.call(0x93CF869BAA0C4874, areaHandle).bool end,
	---  
	NETWORK_ENTITY_AREA_DOES_EXIST = function(areaHandle) return invoker.call(0xE64A3CA08DFA37A9, areaHandle).bool end,
	---  
	NETWORK_ENTITY_AREA_HAVE_ALL_REPLIED = function(areaHandle) return invoker.call(0x4DF7CFFF471A7FB1, areaHandle).bool end,
	---  
	NETWORK_ENTITY_AREA_IS_OCCUPIED = function(areaHandle) return invoker.call(0x4A2D4E8BF4265B0F, areaHandle).bool end,
	---  
	NETWORK_USE_HIGH_PRECISION_BLENDING = function(netID, toggle) invoker.call(0x2B1813ABA29016C5, netID, toggle) end,
	---  
	NETWORK_SET_CUSTOM_ARENA_BALL_PARAMS = function(netId) invoker.call(0xA6FCECCF4721D679, netId) end,
	---  
	NETWORK_ENTITY_USE_HIGH_PRECISION_ROTATION = function(netId, toggle) invoker.call(0x95BAF97C82464629, netId, toggle) end,
	---  
	NETWORK_REQUEST_CLOUD_BACKGROUND_SCRIPTS = function() return invoker.call(0x924426BFFD82E915).bool end,
	---  
	NETWORK_IS_CLOUD_BACKGROUND_SCRIPT_REQUEST_PENDING = function() return invoker.call(0x8132C0EB8B2B3293).bool end,
	---  
	NETWORK_REQUEST_CLOUD_TUNABLES = function() invoker.call(0x42FB3B532D526E6C) end,
	---  
	NETWORK_IS_TUNABLE_CLOUD_REQUEST_PENDING = function() return invoker.call(0x0467C11ED88B7D28).bool end,
	---Actually returns the version (TUNABLE_VERSION)  
	NETWORK_GET_TUNABLE_CLOUD_CRC = function() return invoker.call(0x10BD227A753B0D84).int end,
	---Sets up tunable contexts for _NETWORK_GET_TUNABLES_REGISTRATION_{BOOL|INT|FLOAT}  
	_NETWORK_SET_TUNABLES_REGISTRATION_CONTEXTS = function(tunableContextData) invoker.call(0x014A73449675121D, tunableContextData) end,
	---Clears tunable contexts that were set up using _NETWORK_SET_TUNABLES_REGISTRATION_CONTEXTS  
	_NETWORK_CLEAR_TUNABLES_REGISTRATION_CONTEXTS = function() invoker.call(0x0C87C83C8950432B) end,
	---Checks if the given tunable exists and returns its value. Otherwise returns defaultValue.  
	---Possible tunable contexts must first be set up using _NETWORK_SET_TUNABLES_REGISTRATION_CONTEXTS.  
	_NETWORK_GET_TUNABLES_REGISTRATION_BOOL = function(tunableName, defaultValue) return invoker.call(0xB327CF1B8C2C0EA3, tunableName, defaultValue).bool end,
	---Checks if the given tunable exists and returns its value. Otherwise returns defaultValue.  
	---Possible tunable contexts must first be set up using _NETWORK_SET_TUNABLES_REGISTRATION_CONTEXTS.  
	_NETWORK_GET_TUNABLES_REGISTRATION_INT = function(tunableName, defaultValue) return invoker.call(0x0D94071E55F4C9CE, tunableName, defaultValue).int end,
	---Checks if the given tunable exists and returns its value. Otherwise returns defaultValue.  
	---Possible tunable contexts must first be set up using _NETWORK_SET_TUNABLES_REGISTRATION_CONTEXTS.  
	_NETWORK_GET_TUNABLES_REGISTRATION_FLOAT = function(tunableName, defaultValue) return invoker.call(0x367E5E33E7F0DD1A, tunableName, defaultValue).float end,
	---  
	NETWORK_DOES_TUNABLE_EXIST = function(tunableContext, tunableName) return invoker.call(0x85E5F8B9B898B20A, tunableContext, tunableName).bool end,
	---  
	NETWORK_ACCESS_TUNABLE_INT = function(tunableContext, tunableName, value) return invoker.call(0x8BE1146DFD5D4468, tunableContext, tunableName, value).bool end,
	---  
	NETWORK_ACCESS_TUNABLE_FLOAT = function(tunableContext, tunableName, value) return invoker.call(0xE5608CA7BC163A5F, tunableContext, tunableName, value).bool end,
	---  
	NETWORK_ACCESS_TUNABLE_BOOL = function(tunableContext, tunableName) return invoker.call(0xAA6A47A573ABB75A, tunableContext, tunableName).bool end,
	---  
	NETWORK_DOES_TUNABLE_EXIST_HASH = function(tunableContext, tunableName) return invoker.call(0xE4E53E1419D81127, tunableContext, tunableName).bool end,
	---  
	NETWORK_ACCESS_TUNABLE_MODIFICATION_DETECTION_CLEAR = function() return invoker.call(0xFAFC23AEE23868DB).bool end,
	---  
	NETWORK_ACCESS_TUNABLE_INT_HASH = function(tunableContext, tunableName, value) return invoker.call(0x40FCE03E50E8DBE8, tunableContext, tunableName, value).bool end,
	---  
	NETWORK_ACCESS_TUNABLE_INT_MODIFICATION_DETECTION_REGISTRATION_HASH = function(contextHash, nameHash, value) return invoker.call(0x3A8B55FDA4C8DDEF, contextHash, nameHash, value).bool end,
	---  
	NETWORK_ACCESS_TUNABLE_FLOAT_HASH = function(tunableContext, tunableName, value) return invoker.call(0x972BC203BBC4C4D5, tunableContext, tunableName, value).bool end,
	---  
	NETWORK_ACCESS_TUNABLE_FLOAT_MODIFICATION_DETECTION_REGISTRATION_HASH = function(contextHash, nameHash, value) return invoker.call(0x1950DAE9848A4739, contextHash, nameHash, value).bool end,
	---  
	NETWORK_ACCESS_TUNABLE_BOOL_HASH = function(tunableContext, tunableName) return invoker.call(0xEA16B69D93D71A45, tunableContext, tunableName).bool end,
	---  
	NETWORK_ACCESS_TUNABLE_BOOL_MODIFICATION_DETECTION_REGISTRATION_HASH = function(contextHash, nameHash, value) return invoker.call(0x697F508861875B42, contextHash, nameHash, value).bool end,
	---Returns defaultValue if the tunable doesn't exist.  
	NETWORK_TRY_ACCESS_TUNABLE_BOOL_HASH = function(tunableContext, tunableName, defaultValue) return invoker.call(0xC7420099936CE286, tunableContext, tunableName, defaultValue).bool end,
	---Return the content modifier id (the tunables context if you want) of a specific content.  
	---  
	---It takes the content hash (which is the mission id hash), and return the content modifier id, used as the tunables context.  
	---  
	---The mission id can be found on the Social club, for example, 'socialclub.rockstargames.com/games/gtav/jobs/job/A8M6Bz8MLEC5xngvDCzGwA'  
	---  
	---'A8M6Bz8MLEC5xngvDCzGwA' is the mission id, so the game hash this and use it as the parameter for this native.  
	---  
	NETWORK_GET_CONTENT_MODIFIER_LIST_ID = function(contentHash) return invoker.call(0x187382F8A3E0A6C3, contentHash).int end,
	---  
	NETWORK_GET_BONE_ID_OF_FATAL_HIT = function() return invoker.call(0x7DB53B37A2F211A0).int end,
	---  
	NETWORK_RESET_BODY_TRACKER = function() invoker.call(0x72433699B4E6DD64) end,
	---  
	NETWORK_GET_NUMBER_BODY_TRACKER_HITS = function() return invoker.call(0xD38C4A6D047C019D).int end,
	---  
	NETWORK_HAS_BONE_BEEN_HIT_BY_KILLER = function(boneIndex) return invoker.call(0x2E0BF682CC778D49, boneIndex).bool end,
	---  
	NETWORK_SET_ATTRIBUTE_DAMAGE_TO_PLAYER = function(ped, player) return invoker.call(0x0EDE326D47CD0F3E, ped, player).bool end,
	---Allows vehicle wheels to be destructible even when the vehicle entity is invincible.  
	NETWORK_TRIGGER_DAMAGE_EVENT_FOR_ZERO_DAMAGE = function(entity, toggle) invoker.call(0x890E2C5ABED7236D, entity, toggle) end,
	---  
	_NETWORK_TRIGGER_DAMAGE_EVENT_FOR_ZERO_PED_DAMAGE = function(entity, trigger) invoker.call(0xE9D0244ACBEE1BC4, entity, trigger) end,
	---  
	NETWORK_TRIGGER_DAMAGE_EVENT_FOR_ZERO_WEAPON_HASH = function(entity, toggle) invoker.call(0x38B7C51AB1EDC7D8, entity, toggle) end,
	---  
	NETWORK_SET_NO_LONGER_NEEDED = function(entity, toggle) invoker.call(0x3FC795691834481D, entity, toggle) end,
	---In the console script dumps, this is only referenced once.   
	---NETWORK::NETWORK_EXPLODE_VEHICLE(vehicle, 1, 0, 0);  
	---  
	---^^^^^ That must be PC script dumps? In X360 Script Dumps it is reference a few times with 2 differences in the parameters.  
	---Which as you see below is 1, 0, 0 + 1, 1, 0 + 1, 0, and a *param?  
	---  
	---am_plane_takedown.c   
	---network_explode_vehicle(net_to_veh(Local_40.imm_2), 1, 1, 0);  
	---  
	---armenian2.c   
	---network_explode_vehicle(Local_80[6 <2>], 1, 0, 0);  
	---  
	---fm_horde_controler.c  
	---network_explode_vehicle(net_to_veh(*uParam0), 1, 0, *uParam0);  
	---  
	---fm_mission_controller.c, has 6 hits so not going to list them.  
	---  
	---Side note, setting the first parameter to 0 seems to mute sound or so?  
	---  
	---Seems it's like ADD_EXPLOSION, etc. the first 2 params. The 3rd atm no need to worry since it always seems to be 0.  
	---  
	NETWORK_EXPLODE_VEHICLE = function(vehicle, isAudible, isInvisible, netId) return invoker.call(0x301A42153C9AD707, vehicle, isAudible, isInvisible, netId).bool end,
	---  
	NETWORK_EXPLODE_HELI = function(vehicle, isAudible, isInvisible, netId) invoker.call(0x2A5E0621DD815A9A, vehicle, isAudible, isInvisible, netId) end,
	---  
	NETWORK_USE_LOGARITHMIC_BLENDING_THIS_FRAME = function(entity) invoker.call(0xCD71A4ECAB22709E, entity) end,
	---  
	NETWORK_OVERRIDE_COORDS_AND_HEADING = function(entity, x, y, z, heading) invoker.call(0xA7E30DE9272B6D49, entity, x, y, z, heading) end,
	---  
	NETWORK_ENABLE_EXTRA_VEHICLE_ORIENTATION_BLEND_CHECKS = function(netId, toggle) invoker.call(0xE6717E652B8C8D8A, netId, toggle) end,
	---  
	NETWORK_DISABLE_PROXIMITY_MIGRATION = function(netID) invoker.call(0x407091CF6037118E, netID) end,
	---p0 in the decompiled scripts is always the stat mesh_texblend * 0.07 to int  
	NETWORK_SET_PLAYER_MENTAL_STATE = function(p0) invoker.call(0x367EF5E2F439B4C6, p0) end,
	---  
	NETWORK_SET_MINIMUM_RANK_FOR_MISSION = function(p0) invoker.call(0x94538037EE44F5CF, p0) end,
	---  
	NETWORK_CACHE_LOCAL_PLAYER_HEAD_BLEND_DATA = function() invoker.call(0xBD0BE0BFC927EAC1) end,
	---  
	NETWORK_HAS_CACHED_PLAYER_HEAD_BLEND_DATA = function(player) return invoker.call(0x237D5336A9A54108, player).bool end,
	---  
	NETWORK_APPLY_CACHED_PLAYER_HEAD_BLEND_DATA = function(ped, player) return invoker.call(0x99B72C7ABDE5C910, ped, player).bool end,
	---  
	GET_NUM_COMMERCE_ITEMS = function() return invoker.call(0xF2EAC213D5EA0623).int end,
	---  
	IS_COMMERCE_DATA_VALID = function() return invoker.call(0xEA14EEF5B7CD2C30).bool end,
	---Does nothing (it's a nullsub).  
	TRIGGER_COMMERCE_DATA_FETCH = function(p0) invoker.call(0xB606E6CC59664972, p0) end,
	---  
	IS_COMMERCE_DATA_FETCH_IN_PROGRESS = function() return invoker.call(0x1D4DC17C38FEAFF0).bool end,
	---  
	GET_COMMERCE_ITEM_ID = function(index) return invoker.call(0x662635855957C411, index).str end,
	---  
	GET_COMMERCE_ITEM_NAME = function(index) return invoker.call(0xB4271092CA7EDF48, index).str end,
	---  
	GET_COMMERCE_PRODUCT_PRICE = function(index) return invoker.call(0xCA94551B50B4932C, index).str end,
	---  
	GET_COMMERCE_ITEM_NUM_CATS = function(index) return invoker.call(0x2A7776C709904AB0, index).int end,
	---index2 is unused  
	GET_COMMERCE_ITEM_CAT = function(index, index2) return invoker.call(0x6F44CBF56D79FAC0, index, index2).str end,
	---  
	RESERVE_COMMERCE_STORE_PURCHASE_LOCATION = function(location) invoker.call(0xD5AEB715D79ADE64, location) end,
	---  
	OPEN_COMMERCE_STORE = function(productID, category, location, launchLandingPageOnClose) invoker.call(0x58C21165F6545892, productID, category, location, launchLandingPageOnClose) end,
	---  
	CHECKOUT_COMMERCE_PRODUCT = function(productID, location, launchLandingPageOnClose) invoker.call(0xBF7B00C05D66667C, productID, location, launchLandingPageOnClose) end,
	---  
	IS_COMMERCE_STORE_OPEN = function() return invoker.call(0x2EAC52B4019E2782).bool end,
	---Access to the store for shark cards etc...  
	SET_STORE_ENABLED = function(toggle) invoker.call(0x9641A9FF718E9C5E, toggle) end,
	---  
	REQUEST_COMMERCE_ITEM_IMAGE = function(index) return invoker.call(0xA2F952104FC6DD4B, index).bool end,
	---  
	RELEASE_ALL_COMMERCE_ITEM_IMAGES = function() invoker.call(0x72D0706CD6CCDB58) end,
	---  
	GET_COMMERCE_ITEM_TEXTURENAME = function(index) return invoker.call(0x722F5D28B61C5EA8, index).str end,
	---  
	IS_STORE_AVAILABLE_TO_USER = function() return invoker.call(0x883D79C4071E18B3).bool end,
	---  
	DELAY_MP_STORE_OPEN = function() invoker.call(0x265635150FB0D82E) end,
	---  
	RESET_STORE_NETWORK_GAME_TRACKING = function() invoker.call(0x444C4525ECE0A4B9) end,
	---  
	IS_USER_OLD_ENOUGH_TO_ACCESS_STORE = function() return invoker.call(0x59328EB08C5CEB2B).bool end,
	---  
	SET_LAST_VIEWED_SHOP_ITEM = function(p0, p1, p2) invoker.call(0xFAE628F1E9ADB239, p0, p1, p2) end,
	---Checks some commerce stuff  
	GET_USER_PREMIUM_ACCESS = function() return invoker.call(0x754615490A029508).int end,
	---Checks some commerce stuff  
	GET_USER_STARTER_ACCESS = function() return invoker.call(0x155467ACA0F55705).int end,
	---  
	CLOUD_DELETE_MEMBER_FILE = function(p0) return invoker.call(0xC64DED7EF0D2FE37, p0).int end,
	---  
	CLOUD_HAS_REQUEST_COMPLETED = function(requestId) return invoker.call(0x4C61B39930D045DA, requestId).bool end,
	---  
	CLOUD_DID_REQUEST_SUCCEED = function(requestId) return invoker.call(0x3A3D5568AF297CD5, requestId).bool end,
	---Downloads prod.cloud.rockstargames.com/titles/gta5/[platform]/check.json  
	CLOUD_CHECK_AVAILABILITY = function() invoker.call(0x4F18196C8D38768D) end,
	---  
	CLOUD_IS_CHECKING_AVAILABILITY = function() return invoker.call(0xC7ABAC5DE675EE3B).bool end,
	---  
	CLOUD_GET_AVAILABILITY_CHECK_RESULT = function() return invoker.call(0x0B0CC10720653F3B).bool end,
	---This function is hard-coded to always return 0.  
	GET_CONTENT_TO_LOAD_TYPE = function() return invoker.call(0x8B0C2964BA471961).int end,
	---This function is hard-coded to always return 0.  
	GET_IS_LAUNCH_FROM_LIVE_AREA = function() return invoker.call(0x88B588B41FF7868E).bool end,
	---This function is hard-coded to always return 0.  
	GET_IS_LIVE_AREA_LAUNCH_WITH_CONTENT = function() return invoker.call(0x67FC09BC554A75E5).bool end,
	---This native does absolutely nothing, just a nullsub  
	CLEAR_SERVICE_EVENT_ARGUMENTS = function() invoker.call(0x966DD84FB6A46017) end,
	---  
	UGC_COPY_CONTENT = function(p0, p1) return invoker.call(0x152D90E4C1B4738A, p0, p1).bool end,
	---  
	UGC_IS_CREATING = function() return invoker.call(0x9FEDF86898F100E9).bool end,
	---  
	UGC_HAS_CREATE_FINISHED = function() return invoker.call(0x5E24341A7F92A74B).bool end,
	---  
	UGC_DID_CREATE_SUCCEED = function() return invoker.call(0x24E4E51FC16305F9).bool end,
	---  
	UGC_GET_CREATE_RESULT = function() return invoker.call(0xFBC5E768C7A77A6A).int end,
	---  
	UGC_GET_CREATE_CONTENT_ID = function() return invoker.call(0xC55A0B40FFB1ED23).str end,
	---  
	UGC_CLEAR_CREATE_RESULT = function() invoker.call(0x17440AA15D1D3739) end,
	---  
	UGC_QUERY_MY_CONTENT = function(p0, p1, p2, p3, p4, p5) return invoker.call(0x9BF438815F5D96EA, p0, p1, p2, p3, p4, p5).bool end,
	---  
	UGC_QUERY_BY_CATEGORY = function(p0, p1, p2, p3, p4, p5) return invoker.call(0x692D58DF40657E8C, p0, p1, p2, p3, p4, p5).bool end,
	---  
	UGC_QUERY_BY_CONTENT_ID = function(contentId, latestVersion, contentTypeName) return invoker.call(0x158EC424F35EC469, contentId, latestVersion, contentTypeName).bool end,
	---  
	UGC_QUERY_BY_CONTENT_IDS = function(data, count, latestVersion, contentTypeName) return invoker.call(0xC7397A83F7A2A462, data, count, latestVersion, contentTypeName).bool end,
	---  
	UGC_QUERY_MOST_RECENTLY_CREATED_CONTENT = function(offset, count, contentTypeName, p3) return invoker.call(0x6D4CB481FAC835E8, offset, count, contentTypeName, p3).bool end,
	---  
	UGC_GET_BOOKMARKED_CONTENT = function(p0, p1, p2, p3) return invoker.call(0xD5A4B59980401588, p0, p1, p2, p3).bool end,
	---  
	UGC_GET_MY_CONTENT = function(p0, p1, p2, p3) return invoker.call(0x3195F8DD0D531052, p0, p1, p2, p3).bool end,
	---  
	UGC_GET_FRIEND_CONTENT = function(p0, p1, p2, p3) return invoker.call(0xF9E1CCAE8BA4C281, p0, p1, p2, p3).bool end,
	---  
	UGC_GET_CREW_CONTENT = function(p0, p1, p2, p3, p4) return invoker.call(0x9F6E2821885CAEE2, p0, p1, p2, p3, p4).bool end,
	---  
	UGC_GET_GET_BY_CATEGORY = function(p0, p1, p2, p3, p4) return invoker.call(0x678BB03C1A3BD51E, p0, p1, p2, p3, p4).bool end,
	---  
	UGC_GET_GET_BY_CONTENT_ID = function(contentId, contentTypeName) return invoker.call(0x815E5E3073DA1D67, contentId, contentTypeName).bool end,
	---  
	UGC_GET_GET_BY_CONTENT_IDS = function(data, dataCount, contentTypeName) return invoker.call(0xB8322EEB38BE7C26, data, dataCount, contentTypeName).bool end,
	---  
	UGC_GET_MOST_RECENTLY_CREATED_CONTENT = function(p0, p1, p2, p3) return invoker.call(0xA7862BC5ED1DFD7E, p0, p1, p2, p3).bool end,
	---  
	UGC_GET_MOST_RECENTLY_PLAYED_CONTENT = function(p0, p1, p2, p3) return invoker.call(0x97A770BEEF227E2B, p0, p1, p2, p3).bool end,
	---  
	UGC_GET_TOP_RATED_CONTENT = function(p0, p1, p2, p3) return invoker.call(0x5324A0E3E4CE3570, p0, p1, p2, p3).bool end,
	---  
	UGC_CANCEL_QUERY = function() invoker.call(0xE9B99B6853181409) end,
	---  
	UGC_IS_GETTING = function() return invoker.call(0xD53ACDBEF24A46E8).bool end,
	---  
	UGC_HAS_GET_FINISHED = function() return invoker.call(0x02ADA21EA2F6918F).bool end,
	---  
	UGC_DID_GET_SUCCEED = function() return invoker.call(0x941E5306BCD7C2C7).bool end,
	---  
	UGC_WAS_QUERY_FORCE_CANCELLED = function() return invoker.call(0xC87E740D9F3872CC).bool end,
	---  
	UGC_GET_QUERY_RESULT = function() return invoker.call(0xEDF7F927136C224B).int end,
	---  
	UGC_GET_CONTENT_NUM = function() return invoker.call(0xE0A6138401BCB837).int end,
	---  
	UGC_GET_CONTENT_TOTAL = function() return invoker.call(0x769951E2455E2EB5).int end,
	---  
	UGC_GET_CONTENT_HASH = function() return invoker.call(0x3A17A27D75C74887).int end,
	---  
	UGC_CLEAR_QUERY_RESULTS = function() invoker.call(0xBA96394A0EECFA65) end,
	---  
	UGC_GET_CONTENT_USER_ID = function(p0) return invoker.call(0xCD67AD041A394C9C, p0).str end,
	---  
	UGC_GET_CONTENT_CREATOR_GAMER_HANDLE = function(p0, p1) return invoker.call(0x584770794D758C18, p0, p1).bool end,
	---  
	UGC_GET_CONTENT_CREATED_BY_LOCAL_PLAYER = function(p0) return invoker.call(0x8C8D2739BA44AF0F, p0).bool end,
	---  
	UGC_GET_CONTENT_USER_NAME = function(p0) return invoker.call(0x703F12425ECA8BF5, p0).str end,
	---  
	UGC_GET_CONTENT_IS_USING_SC_NICKNAME = function(p0) return invoker.call(0xAEAB987727C5A8A4, p0).bool end,
	---  
	UGC_GET_CONTENT_CATEGORY = function(p0) return invoker.call(0xA7BAB11E7C9C6C5A, p0).int end,
	---Return the mission id of a job.  
	UGC_GET_CONTENT_ID = function(p0) return invoker.call(0x55AA95F481D694D2, p0).str end,
	---Return the root content id of a job.  
	UGC_GET_ROOT_CONTENT_ID = function(p0) return invoker.call(0xC0173D6BFF4E0348, p0).str end,
	---  
	UGC_GET_CONTENT_NAME = function(p0) return invoker.call(0xBF09786A7FCAB582, p0).str end,
	---  
	UGC_GET_CONTENT_DESCRIPTION = function(index) return invoker.call(0x4A56710BAB5C4DB4, index).str end,
	---  
	UGC_GET_CONTENT_DESCRIPTION_HASH = function(p0) return invoker.call(0x7CF0448787B23758, p0).int end,
	---  
	UGC_GET_CONTENT_PATH = function(p0, p1) return invoker.call(0xBAF6BABF9E7CCC13, p0, p1).str end,
	---  
	UGC_GET_CONTENT_UPDATED_DATE = function(p0, p1) invoker.call(0xCFD115B373C0DF63, p0, p1) end,
	---  
	UGC_GET_CONTENT_FILE_VERSION = function(p0, p1) return invoker.call(0x37025B27D9B658B1, p0, p1).int end,
	---  
	UGC_GET_CONTENT_HAS_LO_RES_PHOTO = function(p0) return invoker.call(0x1D610EB0FEA716D9, p0).bool end,
	---  
	UGC_GET_CONTENT_HAS_HI_RES_PHOTO = function(p0) return invoker.call(0x7FCC39C46C3C03BD, p0).bool end,
	---  
	UGC_GET_CONTENT_LANGUAGE = function(p0) return invoker.call(0x32DD916F3F7C9672, p0).int end,
	---  
	UGC_GET_CONTENT_IS_PUBLISHED = function(p0) return invoker.call(0x3054F114121C21EA, p0).bool end,
	---  
	UGC_GET_CONTENT_IS_VERIFIED = function(p0) return invoker.call(0xA9240A96C74CCA13, p0).bool end,
	---  
	UGC_GET_CONTENT_RATING = function(p0, p1) return invoker.call(0x1ACCFBA3D8DAB2EE, p0, p1).float end,
	---  
	UGC_GET_CONTENT_RATING_COUNT = function(p0, p1) return invoker.call(0x759299C5BB31D2A9, p0, p1).int end,
	---  
	UGC_GET_CONTENT_RATING_POSITIVE_COUNT = function(p0, p1) return invoker.call(0x87E5C46C187FE0AE, p0, p1).int end,
	---  
	UGC_GET_CONTENT_RATING_NEGATIVE_COUNT = function(p0, p1) return invoker.call(0x4E548C0D7AE39FF9, p0, p1).int end,
	---  
	UGC_GET_CONTENT_HAS_PLAYER_RECORD = function(p0) return invoker.call(0x70EA8DA57840F9BE, p0).bool end,
	---  
	UGC_GET_CONTENT_HAS_PLAYER_BOOKMARKED = function(p0) return invoker.call(0x993CBE59D350D225, p0).bool end,
	---  
	UGC_REQUEST_CONTENT_DATA_FROM_INDEX = function(p0, p1) return invoker.call(0x171DF6A0C07FB3DC, p0, p1).int end,
	---  
	UGC_REQUEST_CONTENT_DATA_FROM_PARAMS = function(contentTypeName, contentId, p2, p3, p4) return invoker.call(0x7FD2990AF016795E, contentTypeName, contentId, p2, p3, p4).int end,
	---  
	UGC_REQUEST_CACHED_DESCRIPTION = function(p0) return invoker.call(0x5E0165278F6339EE, p0).int end,
	---  
	UGC_IS_DESCRIPTION_REQUEST_IN_PROGRESS = function(p0) return invoker.call(0x2D5DC831176D0114, p0).bool end,
	---  
	UGC_HAS_DESCRIPTION_REQUEST_FINISHED = function(p0) return invoker.call(0xEBFA8D50ADDC54C4, p0).bool end,
	---  
	UGC_DID_DESCRIPTION_REQUEST_SUCCEED = function(p0) return invoker.call(0x162C23CA83ED0A62, p0).bool end,
	---  
	UGC_GET_CACHED_DESCRIPTION = function(p0, p1) return invoker.call(0x40F7E66472DF3E5C, p0, p1).str end,
	---  
	UGC_RELEASE_CACHED_DESCRIPTION = function(p0) return invoker.call(0x5A34CD9C3C5BEC44, p0).bool end,
	---  
	UGC_RELEASE_ALL_CACHED_DESCRIPTIONS = function() invoker.call(0x68103E2247887242) end,
	---  
	UGC_HAS_PERMISSION_TO_WRITE = function() return invoker.call(0xC33E7CBC06EC1A8D).bool end,
	---  
	UGC_PUBLISH = function(contentId, baseContentId, contentTypeName) return invoker.call(0x1DE0F5F50D723CAA, contentId, baseContentId, contentTypeName).bool end,
	---  
	UGC_SET_BOOKMARKED = function(contentId, bookmarked, contentTypeName) return invoker.call(0x274A1519DFC1094F, contentId, bookmarked, contentTypeName).bool end,
	---  
	UGC_SET_DELETED = function(p0, p1, p2) return invoker.call(0xD05D1A6C74DA3498, p0, p1, p2).bool end,
	---  
	UGC_IS_MODIFYING = function() return invoker.call(0x45E816772E93A9DB).bool end,
	---  
	UGC_HAS_MODIFY_FINISHED = function() return invoker.call(0x299EF3C576773506).bool end,
	---  
	UGC_DID_MODIFY_SUCCEED = function() return invoker.call(0x793FF272D5B365F4).bool end,
	---  
	UGC_GET_MODIFY_RESULT = function() return invoker.call(0x5A0A3D1A186A5508).int end,
	---  
	UGC_CLEAR_MODIFY_RESULT = function() invoker.call(0xA1E5E0204A6FCC70) end,
	---  
	UGC_GET_CREATORS_BY_USER_ID = function(p0, p1) return invoker.call(0xB746D20B17F2A229, p0, p1).bool end,
	---  
	UGC_HAS_QUERY_CREATORS_FINISHED = function() return invoker.call(0x63B406D7884BFA95).bool end,
	---  
	UGC_DID_QUERY_CREATORS_SUCCEED = function() return invoker.call(0x4D02279C83BE69FE).bool end,
	---  
	UGC_GET_CREATOR_NUM = function() return invoker.call(0x597F8DBA9B206FC7).int end,
	---  
	UGC_LOAD_OFFLINE_QUERY = function(p0) return invoker.call(0x5CAE833B0EE0C500, p0).bool end,
	---  
	UGC_CLEAR_OFFLINE_QUERY = function() invoker.call(0x61A885D3F7CFEE9A) end,
	---  
	UGC_SET_QUERY_DATA_FROM_OFFLINE = function(p0) invoker.call(0xF98DDE0A8ED09323, p0) end,
	---  
	UGC_SET_USING_OFFLINE_CONTENT = function(p0) invoker.call(0xFD75DABC0957BF33, p0) end,
	---  
	UGC_IS_LANGUAGE_SUPPORTED = function(p0) return invoker.call(0xF53E48461B71EECB, p0).bool end,
	---  
	FACEBOOK_POST_COMPLETED_HEIST = function(heistName, cashEarned, xpEarned) return invoker.call(0x098AB65B9ED9A9EC, heistName, cashEarned, xpEarned).bool end,
	---  
	FACEBOOK_POST_CREATE_CHARACTER = function() return invoker.call(0xDC48473142545431).bool end,
	---  
	FACEBOOK_POST_COMPLETED_MILESTONE = function(milestoneId) return invoker.call(0x0AE1F1653B554AB9, milestoneId).bool end,
	---  
	FACEBOOK_HAS_POST_COMPLETED = function() return invoker.call(0x62B9FEC9A11F10EF).bool end,
	---  
	FACEBOOK_DID_POST_SUCCEED = function() return invoker.call(0xA75E2B6733DA5142).bool end,
	---  
	FACEBOOK_CAN_POST_TO_FACEBOOK = function() return invoker.call(0x43865688AE10F0D7).bool end,
	---  
	TEXTURE_DOWNLOAD_REQUEST = function(gamerHandle, filePath, name, p3) return invoker.call(0x16160DA74A8E74A2, gamerHandle, filePath, name, p3).int end,
	---  
	TITLE_TEXTURE_DOWNLOAD_REQUEST = function(filePath, name, p2) return invoker.call(0x0B203B4AFDE53A4F, filePath, name, p2).int end,
	---  
	UGC_TEXTURE_DOWNLOAD_REQUEST = function(p0, p1, p2, p3, p4, p5) return invoker.call(0x308F96458B7087CC, p0, p1, p2, p3, p4, p5).int end,
	---  
	TEXTURE_DOWNLOAD_RELEASE = function(p0) invoker.call(0x487EB90B98E9FB19, p0) end,
	---  
	TEXTURE_DOWNLOAD_HAS_FAILED = function(p0) return invoker.call(0x5776ED562C134687, p0).bool end,
	---  
	TEXTURE_DOWNLOAD_GET_NAME = function(p0) return invoker.call(0x3448505B6E35262D, p0).str end,
	---0 = succeeded  
	---1 = pending  
	---2 = failed  
	GET_STATUS_OF_TEXTURE_DOWNLOAD = function(p0) return invoker.call(0x8BD6C6DEA20E82C6, p0).int end,
	---Returns true if profile setting 901 is set to true and sets it to false.  
	NETWORK_CHECK_ROS_LINK_WENTDOWN_NOT_NET = function() return invoker.call(0x60EDD13EB3AC1FF3).bool end,
	---Returns true if the NAT type is Strict (3) and a certain number of connections have failed.  
	NETWORK_SHOULD_SHOW_STRICT_NAT_WARNING = function() return invoker.call(0x82A2B386716608F1).bool end,
	---  
	NETWORK_IS_CABLE_CONNECTED = function() return invoker.call(0xEFFB25453D8600F9).bool end,
	---  
	NETWORK_HAVE_SCS_PRIVATE_MSG_PRIV = function() return invoker.call(0x66B59CFFD78467AF).bool end,
	---  
	NETWORK_HAVE_ROS_SOCIAL_CLUB_PRIV = function() return invoker.call(0x606E4D3E3CCCF3EB).bool end,
	---  
	NETWORK_HAVE_ROS_BANNED_PRIV = function() return invoker.call(0x8020A73847E0CA7D).bool end,
	---  
	NETWORK_HAVE_ROS_CREATE_TICKET_PRIV = function() return invoker.call(0xA0AD7E2AF5349F61).bool end,
	---  
	NETWORK_HAVE_ROS_MULTIPLAYER_PRIV = function() return invoker.call(0x5F91D5D0B36AA310).bool end,
	---  
	NETWORK_HAVE_ROS_LEADERBOARD_WRITE_PRIV = function() return invoker.call(0x422D396F80A96547).bool end,
	---index is always 18 in scripts  
	NETWORK_HAS_ROS_PRIVILEGE = function(index) return invoker.call(0xA699957E60D80214, index).bool end,
	---  
	NETWORK_HAS_ROS_PRIVILEGE_END_DATE = function(privilege, banType, timeData) return invoker.call(0xC22912B1D85F26B1, privilege, banType, timeData).bool end,
	---  
	NETWORK_HAS_ROS_PRIVILEGE_PLAYED_LAST_GEN = function() return invoker.call(0x593570C289A77688).bool end,
	---  
	NETWORK_HAS_ROS_PRIVILEGE_SPECIAL_EDITION_CONTENT = function() return invoker.call(0x91B87C55093DE351).bool end,
	---Checks for privilege 29  
	_NETWORK_HAS_ROS_PRIVILEGE_MP_TEXT_COMMUNICATION = function() return invoker.call(0xD9719341663C385F).bool end,
	---Checks for privilege 30  
	_NETWORK_HAS_ROS_PRIVILEGE_MP_VOICE_COMMUNICATION = function() return invoker.call(0x8956A309BE90057C).bool end,
	---Checks for privilege 31  
	_NETWORK_HAS_ROS_PRIVILEGE_REPORTING = function() return invoker.call(0x9BA54B3CFB82ADDD).bool end,
	---Always returns -1. Seems to be XB1 specific.  
	NETWORK_START_USER_CONTENT_PERMISSIONS_CHECK = function(netHandle) return invoker.call(0xDEB2B99A1AF1A2A6, netHandle).int end,
	---  
	NETWORK_SKIP_RADIO_RESET_NEXT_CLOSE = function() invoker.call(0x9465E683B12D3F6B) end,
	---  
	NETWORK_SKIP_RADIO_RESET_NEXT_OPEN = function() invoker.call(0xCA59CCAE5D01E4CE) end,
	---Returns true if dinput8.dll is present in the game directory.  
	---You will get following error message if that is true: "You are attempting to access GTA Online servers with an altered version of the game."  
	NETWORK_SKIP_RADIO_WARNING = function() return invoker.call(0x659CF2EF7F550C4F).bool end,
	---NETWORK_F[I-O]  
	NETWORK_FORCE_LOCAL_PLAYER_SCAR_SYNC = function() invoker.call(0xB7C7F6AD6424304B) end,
	---  
	NETWORK_DISABLE_LEAVE_REMOTE_PED_BEHIND = function(toggle) invoker.call(0xC505036A35AFD01B, toggle) end,
	---  
	NETWORK_ALLOW_REMOTE_ATTACHMENT_MODIFICATION = function(entity, toggle) invoker.call(0x267C78C60E806B9A, entity, toggle) end,
	---Does nothing (it's a nullsub).  
	NETWORK_SHOW_CHAT_RESTRICTION_MSC = function(player) invoker.call(0x6BFF5F84102DF80A, player) end,
	---This native does absolutely nothing, just a nullsub  
	NETWORK_SHOW_PSN_UGC_RESTRICTION = function() invoker.call(0x5C497525F803486B) end,
	---This function is hard-coded to always return 0.  
	NETWORK_IS_TITLE_UPDATE_REQUIRED = function() return invoker.call(0x6FB7BB3607D27FA2).bool end,
	---  
	NETWORK_QUIT_MP_TO_DESKTOP = function() invoker.call(0x45A83257ED02D9BC) end,
	---  
	NETWORK_IS_CONNECTED_VIA_RELAY = function(player) return invoker.call(0x16D3D49902F697BB, player).bool end,
	---  
	NETWORK_GET_AVERAGE_LATENCY = function(player) return invoker.call(0xD414BE129BB81B32, player).float end,
	---Same as NETWORK_GET_AVERAGE_LATENCY  
	NETWORK_GET_AVERAGE_PING = function(player) return invoker.call(0x0E3A041ED6AC2B45, player).float end,
	---  
	NETWORK_GET_AVERAGE_PACKET_LOSS = function(player) return invoker.call(0x350C23949E43686C, player).float end,
	---  
	NETWORK_GET_NUM_UNACKED_RELIABLES = function(player) return invoker.call(0xFF8FCF9FFC458A1C, player).int end,
	---  
	NETWORK_GET_UNRELIABLE_RESEND_COUNT = function(player) return invoker.call(0x3765C3A3E8192E10, player).int end,
	---  
	NETWORK_GET_HIGHEST_RELIABLE_RESEND_COUNT = function(player) return invoker.call(0x52C1EADAF7B10302, player).int end,
	---  
	NETWORK_REPORT_CODE_TAMPER = function() invoker.call(0x5626D9D6810730D5) end,
	---  
	NETWORK_GET_LAST_ENTITY_POS_RECEIVED_OVER_NETWORK = function(entity) return invoker.call(0x64D779659BC37B19, entity).scr_vec3 end,
	---Returns the coordinates of another player.  
	---Does not work if you enter your own player id as p0 (will return `(0.0, 0.0, 0.0)` in that case).  
	NETWORK_GET_LAST_PLAYER_POS_RECEIVED_OVER_NETWORK = function(player) return invoker.call(0x125E6D638B8605D4, player).scr_vec3 end,
	---Used by NetBlender  
	NETWORK_GET_LAST_VEL_RECEIVED_OVER_NETWORK = function(entity) return invoker.call(0x33DE49EDF4DDE77A, entity).scr_vec3 end,
	---  
	NETWORK_GET_PREDICTED_VELOCITY = function(entity, maxSpeedToPredict) return invoker.call(0xAA5FAFCD2C5F5E47, entity, maxSpeedToPredict).scr_vec3 end,
	---Does nothing (it's a nullsub).  
	NETWORK_DUMP_NET_IF_CONFIG = function() invoker.call(0xAEDF1BC1C133D6E3) end,
	---Does nothing (it's a nullsub).  
	NETWORK_GET_SIGNALLING_INFO = function(p0) invoker.call(0x2555CF7DA5473794, p0) end,
	---Does nothing (it's a nullsub).  
	NETWORK_GET_NET_STATISTICS_INFO = function(p0) invoker.call(0x6FD992C4A1C1B986, p0) end,
	---  
	NETWORK_GET_PLAYER_ACCOUNT_ID = function(player) return invoker.call(0xDB663CC9FF3407A9, player).int end,
	---  
	NETWORK_POST_UDS_ACTIVITY_START = function(activityId) invoker.call(0x06FF3C88FCADEDB0, activityId) end,
	---  
	NETWORK_POST_UDS_ACTIVITY_END = function(activityId, iOutcome, iScore) invoker.call(0xC78F2FFEECA7EE57, activityId, iOutcome, iScore) end,
	---  
	NETWORK_POST_UDS_ACTIVITY_RESUME = function(activityId) invoker.call(0xB8B3A6B404B1844B, activityId) end,
	---  
	NETWORK_POST_UDS_ACTIVITY_RESUME_WITH_TASKS = function(activityId, taskStatus) invoker.call(0xD06669003AD0DA58, activityId, taskStatus) end,
	---  
	NETWORK_POST_UDS_ACTIVITY_AVAILABILITY_CHANGE = function(availablityData) invoker.call(0x8A50277FD4E75404, availablityData) end,
	---Does nothing.  
	NETWORK_POST_UDS_ACTIVITY_TERMINATE = function() invoker.call(0xC243F786521F4321) end,
	---  
	NETWORK_HAS_SC_MEMBERSHIP_INFO = function() return invoker.call(0x483F6369B8CEE24B).bool end,
	---  
	NETWORK_GET_SC_MEMBERSHIP_INFO = function(info) invoker.call(0x9FA18B5CD8803086, info) end,
	---  
	NETWORK_UGC_NAV = function(p0, p1) invoker.call(0xC1447451DDB512F0, p0, p1) end,
	---enum eNetworkGameRestartReason  
	---{  
	---	BE_RESTART_SERVICE_NOT_RUNNING = 1, 	// BattlEye service not running  
	---	BE_RESTART_SERVICE_NEEDS_UPDATE, 		// BattlEye service needs an update  
	---	BE_RESTART_UNKNOWN_REASON,				// Unknown BattlEye reason  
	---	BE_RESTART_EF_DISABLED_WITH_BE,			// BattlEye Enforcement Flag is disabled, but BattlEye is active  
	---	BE_RESTART_EF_ENABLED_NO_BE,			// BattlEye Enforcement Flag is enabled, but BattlEye is not active  
	---	BE_RESTART_BE_MODULES_FAILED_TO_LOAD,	// BattlEye modules failed to load  
	---	NUM_NETWORK_GAME_RESTART_REASONS  
	---};  
	_NETWORK_GET_GAME_RESTART_REASON = function() return invoker.call(0x7F7E8401F81CB65B).int end,
	---If the restart reason is 4 (BE_RESTART_EF_DISABLED_WITH_BE), will cause the game to exit with exit code 622011. Otherwise exits with code 622010. Has no effect when a restart hasn't been requested (reason == 0 or reason > 6).  
	---  
	---Note that this 'confirmation' itself does not restart the game, a call to QUIT_GAME or similar is required afterwards.  
	_NETWORK_CONFIRM_GAME_RESTART = function() invoker.call(0x0A141818CA2311AD) end,
	---Returns the restart reason as a string, see _NETWORK_GET_GAME_RESTART_REASON. Returns a null pointer when a restart hasn't been requested (reason == 0 or reason > 6).  
	_NETWORK_GET_GAME_RESTART_REASON_MESSAGE_LABEL = function() return invoker.call(0x47B11D51FC50A259).str end,
	---0x20211000 = HUD_BE_ERROR_FAILED_UNKNOWN  
	---0x20212000 = HUD_BE_ERROR_FAILED_CLIENT_INIT  
	---0x20213000 = HUD_BE_ERROR_FAILED_SERVER_INIT  
	---0x20214000 = HUD_BE_ERROR_FAILED_AUTH_ATTEMPTS  
	---0x20215000 = HUD_BE_ERROR_UNTRUSTED_HOST  
	---0x20216000 = HUD_BE_ERROR_KICKED  
	---0x20217000 = HUD_BE_ERROR_BANNED  
	---0x50140000 = HUD_BE_BLOCK_BANNED  
	---  
	---Note: an invalid error code returns a null pointer!  
	_NETWORK_GET_BATTLEYE_ERROR_MESSAGE_LABEL = function(errorCode) return invoker.call(0xCBA50F371E45B90D, errorCode).str end,
}
OBJECT={
	---List of object models that can be created without any additional effort like making sure ytyp is loaded etc: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/ObjectList.ini  
	CREATE_OBJECT = function(modelHash, x, y, z, isNetwork, bScriptHostObj, dynamic) return invoker.call(0x509D5878EB39E842, modelHash, x, y, z, isNetwork, bScriptHostObj, dynamic).int end,
	---List of object models that can be created without any additional effort like making sure ytyp is loaded etc: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/ObjectList.ini  
	CREATE_OBJECT_NO_OFFSET = function(modelHash, x, y, z, isNetwork, bScriptHostObj, dynamic, p7) return invoker.call(0x9A294B2138ABB884, modelHash, x, y, z, isNetwork, bScriptHostObj, dynamic, p7).int end,
	---Deletes the specified object, then sets the handle pointed to by the pointer to NULL.  
	DELETE_OBJECT = function(object) invoker.call(0x539E0AE3E6634B9F, object) end,
	---  
	PLACE_OBJECT_ON_GROUND_PROPERLY = function(object) return invoker.call(0x58A850EAEE20FAA3, object).bool end,
	---  
	PLACE_OBJECT_ON_GROUND_OR_OBJECT_PROPERLY = function(object) return invoker.call(0xD76EEEF746057FD6, object).bool end,
	---  
	ROTATE_OBJECT = function(object, p1, p2, p3) return invoker.call(0xAFE24E4D29249E4A, object, p1, p2, p3).bool end,
	---Returns true if the object has finished moving.  
	---  
	---If false, moves the object towards the specified X, Y and Z coordinates with the specified X, Y and Z speed.  
	---  
	---See also: https://gtagmodding.com/opcode-database/opcode/034E/  
	---Has to be looped until it returns true.  
	SLIDE_OBJECT = function(object, toX, toY, toZ, speedX, speedY, speedZ, collision) return invoker.call(0x2FDFF4107B8C1147, object, toX, toY, toZ, speedX, speedY, speedZ, collision).bool end,
	---  
	SET_OBJECT_TARGETTABLE = function(object, targettable, p2) invoker.call(0x8A7391690F5AFD81, object, targettable, p2) end,
	---Sets the 34th and 35th object flags related to player peds.  
	_SET_OBJECT_TARGETTABLE_BY_PLAYER = function(object, setFlag34, setFlag35) invoker.call(0xB39F03368DB0CAA2, object, setFlag34, setFlag35) end,
	---Overrides a flag on the object which determines if the object should be avoided by a vehicle in task CTaskVehicleGoToPointWithAvoidanceAutomobile.  
	SET_OBJECT_FORCE_VEHICLES_TO_AVOID = function(object, toggle) invoker.call(0x77F33F2CCF64B3AA, object, toggle) end,
	---Has 8 params in the latest patches.  
	---  
	---isMission - if true doesn't return mission objects  
	GET_CLOSEST_OBJECT_OF_TYPE = function(x, y, z, radius, modelHash, isMission, p6, p7) return invoker.call(0xE143FA2249364369, x, y, z, radius, modelHash, isMission, p6, p7).int end,
	---  
	HAS_OBJECT_BEEN_BROKEN = function(object, p1) return invoker.call(0x8ABFB70C49CC43E2, object, p1).bool end,
	---  
	HAS_CLOSEST_OBJECT_OF_TYPE_BEEN_BROKEN = function(p0, p1, p2, p3, modelHash, p5) return invoker.call(0x761B0E69AC4D007E, p0, p1, p2, p3, modelHash, p5).bool end,
	---  
	HAS_CLOSEST_OBJECT_OF_TYPE_BEEN_COMPLETELY_DESTROYED = function(x, y, z, radius, modelHash, p5) return invoker.call(0x46494A2475701343, x, y, z, radius, modelHash, p5).bool end,
	---  
	GET_HAS_OBJECT_BEEN_COMPLETELY_DESTROYED = function(p0) return invoker.call(0x2542269291C6AC84, p0).bool end,
	---  
	GET_OFFSET_FROM_COORD_AND_HEADING_IN_WORLD_COORDS = function(xPos, yPos, zPos, heading, xOffset, yOffset, zOffset) return invoker.call(0x163E252DE035A133, xPos, yPos, zPos, heading, xOffset, yOffset, zOffset).scr_vec3 end,
	---  
	GET_COORDS_AND_ROTATION_OF_CLOSEST_OBJECT_OF_TYPE = function(x, y, z, radius, modelHash, outPosition, outRotation, rotationOrder) return invoker.call(0x163F8B586BC95F2A, x, y, z, radius, modelHash, outPosition, outRotation, rotationOrder).bool end,
	---Hardcoded to not work in multiplayer.  
	---  
	---  
	---Used to lock/unlock doors to interior areas of the game.  
	---  
	---(Possible) Door Types:  
	---  
	---https://pastebin.com/9S2m3qA4  
	---  
	---Heading is either 1, 0 or -1 in the scripts. Means default closed(0) or opened either into(1) or out(-1) of the interior.  
	---Locked means that the heading is locked.    
	---p6 is always 0.   
	---  
	---225 door types, model names and coords found in stripclub.c4:  
	---https://pastebin.com/gywnbzsH  
	---  
	---get door info: https://pastebin.com/i14rbekD  
	SET_STATE_OF_CLOSEST_DOOR_OF_TYPE = function(type, x, y, z, locked, heading, p6) invoker.call(0xF82D8F1926A02C3D, type, x, y, z, locked, heading, p6) end,
	---locked is 0 if no door is found  
	---locked is 0 if door is unlocked  
	---locked is 1 if door is found and unlocked.  
	---  
	----------------  
	---the locked bool is either 0(unlocked)(false) or 1(locked)(true)  
	GET_STATE_OF_CLOSEST_DOOR_OF_TYPE = function(type, x, y, z, locked, heading) invoker.call(0xEDC1A5B84AEF33FF, type, x, y, z, locked, heading) end,
	---Hardcoded not to work in multiplayer environments.  
	---When you set locked to 0 the door open and to 1 the door close  
	---OBJECT::SET_LOCKED_UNSTREAMED_IN_DOOR_OF_TYPE(${prop_gate_prison_01}, 1845.0, 2605.0, 45.0, 0, 0.0, 50.0, 0);  //door open  
	---  
	---OBJECT::SET_LOCKED_UNSTREAMED_IN_DOOR_OF_TYPE(${prop_gate_prison_01}, 1845.0, 2605.0, 45.0, 1, 0.0, 50.0, 0);  //door close  
	SET_LOCKED_UNSTREAMED_IN_DOOR_OF_TYPE = function(modelHash, x, y, z, locked, xRotMult, yRotMult, zRotMult) invoker.call(0x9B12F9A24FABEDB0, modelHash, x, y, z, locked, xRotMult, yRotMult, zRotMult) end,
	---  
	PLAY_OBJECT_AUTO_START_ANIM = function(p0) invoker.call(0x006E4B040ED37EC3, p0) end,
	---doorHash has to be unique. scriptDoor false; relies upon getNetworkGameScriptHandler. isLocal On true disables the creation CRequestDoorEvent's in DOOR_SYSTEM_SET_DOOR_STATE.  
	---p5 only set to true in single player native scripts.  
	---If scriptDoor is true, register the door on the script handler host (note: there's a hardcap on the number of script IDs that can be added to the system at a given time). If scriptDoor and isLocal are both false, the door is considered to be in a "Persists w/o netobj" state.  
	---  
	---door hashes normally look like PROP_[int]_DOOR_[int] for interior doors and PROP_BUILDING_[int]_DOOR_[int] exterior doors but you can just make up your own hash if you want  
	---All doors need to be registered with ADD_DOOR_TO_SYSTEM before they can be manipulated with the door natives and the easiest way to get door models is just find the door in codewalker.  
	---  
	---Example: AddDoorToSystem("PROP_43_DOOR_0", "hei_v_ilev_fh_heistdoor2", -1456.818, -520.5037, 69.67043, 0, 0, 0)  
	ADD_DOOR_TO_SYSTEM = function(doorHash, modelHash, x, y, z, p5, scriptDoor, isLocal, p8) invoker.call(0x6F8838D03D1DC226, doorHash, modelHash, x, y, z, p5, scriptDoor, isLocal, p8) end,
	---CDoor and CDoorSystemData still internally allocated (and their associations between doorHash, modelHash, and coordinates).  
	---Only its NetObj removed and flag ``*(v2 + 192) |= 8u`` (1604 retail) toggled.  
	REMOVE_DOOR_FROM_SYSTEM = function(doorHash, p1) invoker.call(0x464D8E1427156FE4, doorHash, p1) end,
	---Lockstates not applied and CNetObjDoor's not created until DOOR_SYSTEM_GET_IS_PHYSICS_LOADED returns true.  
	---`requestDoor` on true, and when door system is configured to, i.e., "persists w/o netobj", generate a CRequestDoorEvent.  
	---`forceUpdate` on true, forces an update on the door system (same path as netObjDoor_applyDoorStuff)  
	---Door lock states:  
	---0: UNLOCKED  
	---1: LOCKED  
	---2: DOORSTATE_FORCE_LOCKED_UNTIL_OUT_OF_AREA  
	---3: DOORSTATE_FORCE_UNLOCKED_THIS_FRAME  
	---4: DOORSTATE_FORCE_LOCKED_THIS_FRAME  
	---5: DOORSTATE_FORCE_OPEN_THIS_FRAME  
	---6: DOORSTATE_FORCE_CLOSED_THIS_FRAME  
	DOOR_SYSTEM_SET_DOOR_STATE = function(doorHash, state, requestDoor, forceUpdate) invoker.call(0x6BAB9442830C7F53, doorHash, state, requestDoor, forceUpdate) end,
	---  
	DOOR_SYSTEM_GET_DOOR_STATE = function(doorHash) return invoker.call(0x160AA1B32F6139B8, doorHash).int end,
	---  
	DOOR_SYSTEM_GET_DOOR_PENDING_STATE = function(doorHash) return invoker.call(0x4BC2854478F3A749, doorHash).int end,
	---Includes networking check: ownership vs. or the door itself **isn't** networked.  
	---`forceUpdate` on true invokes DOOR_SYSTEM_SET_DOOR_STATE otherwise requestDoor is unused.  
	DOOR_SYSTEM_SET_AUTOMATIC_RATE = function(doorHash, rate, requestDoor, forceUpdate) invoker.call(0x03C27E13B42A0E82, doorHash, rate, requestDoor, forceUpdate) end,
	---`forceUpdate` on true invokes DOOR_SYSTEM_SET_DOOR_STATE otherwise requestDoor is unused.  
	DOOR_SYSTEM_SET_AUTOMATIC_DISTANCE = function(doorHash, distance, requestDoor, forceUpdate) invoker.call(0x9BA001CB45CBF627, doorHash, distance, requestDoor, forceUpdate) end,
	---Sets the ajar angle of a door.  
	---Ranges from -1.0 to 1.0, and 0.0 is closed / default.  
	---`forceUpdate` on true invokes DOOR_SYSTEM_SET_DOOR_STATE otherwise requestDoor is unused.  
	DOOR_SYSTEM_SET_OPEN_RATIO = function(doorHash, ajar, requestDoor, forceUpdate) invoker.call(0xB6E6FBA95C7324AC, doorHash, ajar, requestDoor, forceUpdate) end,
	---  
	DOOR_SYSTEM_GET_AUTOMATIC_DISTANCE = function(doorHash) return invoker.call(0xE851471AEFC3374F, doorHash).float end,
	---  
	DOOR_SYSTEM_GET_OPEN_RATIO = function(doorHash) return invoker.call(0x65499865FCA6E5EC, doorHash).float end,
	---  
	DOOR_SYSTEM_GET_IS_SPRING_REMOVED = function(doorHash) return invoker.call(0x8562FD8AB1E94D39, doorHash).bool end,
	---Includes networking check: ownership vs. or the door itself **isn't** networked.  
	---`forceUpdate` on true invokes DOOR_SYSTEM_SET_DOOR_STATE otherwise requestDoor is unused.  
	DOOR_SYSTEM_SET_SPRING_REMOVED = function(doorHash, removed, requestDoor, forceUpdate) invoker.call(0xC485E07E4F0B7958, doorHash, removed, requestDoor, forceUpdate) end,
	---Includes networking check: ownership vs. or the door itself **isn't** networked.  
	DOOR_SYSTEM_SET_HOLD_OPEN = function(doorHash, toggle) invoker.call(0xD9B71952F78A2640, doorHash, toggle) end,
	---Some property related to gates. Native name between ``DOOR_SYSTEM_SET_AUTOMATIC_RATE`` and ``DOOR_SYSTEM_SET_DOOR_STATE``.  
	DOOR_SYSTEM_SET_DOOR_OPEN_FOR_RACES = function(doorHash, p1) invoker.call(0xA85A21582451E951, doorHash, p1) end,
	---if (OBJECT::IS_DOOR_REGISTERED_WITH_SYSTEM(doorHash))   
	---{  
	---    OBJECT::REMOVE_DOOR_FROM_SYSTEM(doorHash);  
	---}  
	IS_DOOR_REGISTERED_WITH_SYSTEM = function(doorHash) return invoker.call(0xC153C43EA202C8C1, doorHash).bool end,
	---  
	IS_DOOR_CLOSED = function(doorHash) return invoker.call(0xC531EE8A1145A149, doorHash).bool end,
	---  
	OPEN_ALL_BARRIERS_FOR_RACE = function(p0) invoker.call(0xC7F29CA00F46350E, p0) end,
	---Clears the fields sets by 0xC7F29CA00F46350E (1604 retail: 0x1424A7A10, 0x1424A7A11) and iterates over the global CDoor's bucket-list.  
	---Related to its "Pre-networked state"?  
	CLOSE_ALL_BARRIERS_FOR_RACE = function() invoker.call(0x701FDA1E82076BA4) end,
	---  
	DOOR_SYSTEM_GET_IS_PHYSICS_LOADED = function(p0) return invoker.call(0xDF97CDD4FC08FD34, p0).bool end,
	---Search radius: 0.5  
	DOOR_SYSTEM_FIND_EXISTING_DOOR = function(x, y, z, modelHash, outDoorHash) return invoker.call(0x589F80B325CC82C5, x, y, z, modelHash, outDoorHash).bool end,
	---  
	IS_GARAGE_EMPTY = function(garageHash, p1, p2) return invoker.call(0x90E47239EA1980B8, garageHash, p1, p2).bool end,
	---  
	IS_PLAYER_ENTIRELY_INSIDE_GARAGE = function(garageHash, player, p2, p3) return invoker.call(0x024A60DEB0EA69F0, garageHash, player, p2, p3).bool end,
	---  
	IS_PLAYER_PARTIALLY_INSIDE_GARAGE = function(garageHash, player, p2) return invoker.call(0x1761DC5D8471CBAA, garageHash, player, p2).bool end,
	---  
	ARE_ENTITIES_ENTIRELY_INSIDE_GARAGE = function(garageHash, p1, p2, p3, p4) return invoker.call(0x85B6C850546FDDE2, garageHash, p1, p2, p3, p4).bool end,
	---  
	IS_ANY_ENTITY_ENTIRELY_INSIDE_GARAGE = function(garageHash, p1, p2, p3, p4) return invoker.call(0x673ED815D6E323B7, garageHash, p1, p2, p3, p4).bool end,
	---Despite the name, it does work for any entity type.  
	IS_OBJECT_ENTIRELY_INSIDE_GARAGE = function(garageHash, entity, p2, p3) return invoker.call(0x372EF6699146A1E4, garageHash, entity, p2, p3).bool end,
	---Despite the name, it does work for any entity type.  
	IS_OBJECT_PARTIALLY_INSIDE_GARAGE = function(garageHash, entity, p2) return invoker.call(0xF0EED5A6BC7B237A, garageHash, entity, p2).bool end,
	---  
	CLEAR_GARAGE = function(garageHash, isNetwork) invoker.call(0xDA05194260CDCDF9, garageHash, isNetwork) end,
	---  
	CLEAR_OBJECTS_INSIDE_GARAGE = function(garageHash, vehicles, peds, objects, isNetwork) invoker.call(0x190428512B240692, garageHash, vehicles, peds, objects, isNetwork) end,
	---Sets a flag. A valid id is 0x157DC10D  
	DISABLE_TIDYING_UP_IN_GARAGE = function(id, toggle) invoker.call(0x659F9D71F52843F8, id, toggle) end,
	---  
	ENABLE_SAVING_IN_GARAGE = function(garageHash, toggle) invoker.call(0xF2E1A7133DD356A6, garageHash, toggle) end,
	---  
	CLOSE_SAFEHOUSE_GARAGES = function() invoker.call(0x66A49D021870FE88) end,
	---p5 is usually 0.  
	DOES_OBJECT_OF_TYPE_EXIST_AT_COORDS = function(x, y, z, radius, hash, p5) return invoker.call(0xBFA48E2FF417213F, x, y, z, radius, hash, p5).bool end,
	---An angled area is an X-Z oriented rectangle with three parameters:  
	---1. origin: the mid-point along a base edge of the rectangle;  
	---2. extent: the mid-point of opposite base edge on the other Z;  
	---3. width: the length of the base edge; (named derived from logging strings ``CNetworkRoadNodeWorldStateData``).  
	---  
	---The oriented rectangle can then be derived from the direction of the two points (``norm(origin - extent)``), its orthonormal, and the width, e.g:  
	---1. golf_mp https://i.imgur.com/JhsQAK9.png  
	---2. am_taxi https://i.imgur.com/TJWCZaT.jpg  
	IS_POINT_IN_ANGLED_AREA = function(xPos, yPos, zPos, x1, y1, z1, x2, y2, z2, width, debug, includeZ) return invoker.call(0x2A70BAE8883E4C81, xPos, yPos, zPos, x1, y1, z1, x2, y2, z2, width, debug, includeZ).bool end,
	---Overrides the climbing/blocking flags of the object, used in the native scripts mostly for "prop_dock_bouy_*"  
	SET_OBJECT_ALLOW_LOW_LOD_BUOYANCY = function(object, toggle) invoker.call(0x4D89D607CB3DD1D2, object, toggle) end,
	---Adjust the physics parameters of a prop, or otherwise known as "object". This is useful for simulated gravity.  
	---  
	---Other parameters seem to be unknown.  
	---  
	---p2: seems to be weight and gravity related. Higher value makes the obj fall faster. Very sensitive?  
	---p3: seems similar to p2  
	---p4: makes obj fall slower the higher the value  
	---p5: similar to p4  
	SET_OBJECT_PHYSICS_PARAMS = function(object, weight, p2, p3, p4, p5, gravity, p7, p8, p9, p10, buoyancy) invoker.call(0xF6DF6E90DE7DF90F, object, weight, p2, p3, p4, p5, gravity, p7, p8, p9, p10, buoyancy) end,
	---  
	GET_OBJECT_FRAGMENT_DAMAGE_HEALTH = function(p0, p1) return invoker.call(0xB6FBFD079B8D0596, p0, p1).float end,
	---  
	SET_ACTIVATE_OBJECT_PHYSICS_AS_SOON_AS_IT_IS_UNFROZEN = function(object, toggle) invoker.call(0x406137F8EF90EAF5, object, toggle) end,
	---  
	IS_ANY_OBJECT_NEAR_POINT = function(x, y, z, range, p4) return invoker.call(0x397DC58FF00298D1, x, y, z, range, p4).bool end,
	---  
	IS_OBJECT_NEAR_POINT = function(objectHash, x, y, z, range) return invoker.call(0x8C90FE4B381BA60A, objectHash, x, y, z, range).bool end,
	---  
	REMOVE_OBJECT_HIGH_DETAIL_MODEL = function(object) invoker.call(0x4A39DB43E47CF3AA, object) end,
	---  
	BREAK_OBJECT_FRAGMENT_CHILD = function(p0, p1, p2) invoker.call(0xE7E4C198B0185900, p0, p1, p2) end,
	---  
	DAMAGE_OBJECT_FRAGMENT_CHILD = function(p0, p1, p2) invoker.call(0xE05F6AEEFEB0BB02, p0, p1, p2) end,
	---  
	FIX_OBJECT_FRAGMENT = function(object) invoker.call(0xF9C1681347C8BD15, object) end,
	---  
	TRACK_OBJECT_VISIBILITY = function(object) invoker.call(0xB252BC036B525623, object) end,
	---  
	IS_OBJECT_VISIBLE = function(object) return invoker.call(0x8B32ACE6326A7546, object).bool end,
	---  
	SET_OBJECT_IS_SPECIAL_GOLFBALL = function(object, toggle) invoker.call(0xC6033D32241F6FB5, object, toggle) end,
	---  
	SET_OBJECT_TAKES_DAMAGE_FROM_COLLIDING_WITH_BUILDINGS = function(p0, p1) invoker.call(0xEB6F1A9B5510A5D2, p0, p1) end,
	---  
	ALLOW_DAMAGE_EVENTS_FOR_NON_NETWORKED_OBJECTS = function(value) invoker.call(0xABDABF4E1EDECBFA, value) end,
	---Requires a component_at_*_flsh to be attached to the weapon object  
	SET_CUTSCENES_WEAPON_FLASHLIGHT_ON_THIS_FRAME = function(object, toggle) invoker.call(0xBCE595371A5FBAAF, object, toggle) end,
	---Example:  
	---OBJECT::GET_RAYFIRE_MAP_OBJECT(-809.9619750976562, 170.919, 75.7406997680664, 3.0, "des_tvsmash");  
	GET_RAYFIRE_MAP_OBJECT = function(x, y, z, radius, name) return invoker.call(0xB48FCED898292E52, x, y, z, radius, name).int end,
	---Defines the state of a destructible object.  
	---Use the GET_RAYFIRE_MAP_OBJECT native to find an object's handle with its name / coords.  
	---State 2 == object just spawned  
	---State 4 == Beginning of the animation  
	---State 6 == Start animation  
	---State 9 == End of the animation  
	SET_STATE_OF_RAYFIRE_MAP_OBJECT = function(object, state) invoker.call(0x5C29F698D404C5E1, object, state) end,
	---Get a destructible object's state.  
	---Substract 1 to get the real state.  
	---See SET_STATE_OF_RAYFIRE_MAP_OBJECT to see the different states  
	---For example, if the object just spawned (state 2), the native will return 3.  
	GET_STATE_OF_RAYFIRE_MAP_OBJECT = function(object) return invoker.call(0x899BA936634A322E, object).int end,
	---Returns true if a destructible object with this handle exists, false otherwise.    
	DOES_RAYFIRE_MAP_OBJECT_EXIST = function(object) return invoker.call(0x52AF537A0C5B8AAD, object).bool end,
	---`object`: The des-object handle to get the animation progress from.  
	---Return value is a float between 0.0 and 1.0, 0.0 is the beginning of the animation, 1.0 is the end. Value resets to 0.0 instantly after reaching 1.0.  
	GET_RAYFIRE_MAP_OBJECT_ANIM_PHASE = function(object) return invoker.call(0x260EE4FDBDF4DB01, object).float end,
	---Full list of pickup types by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/pickupTypes.json  
	CREATE_PICKUP = function(pickupHash, posX, posY, posZ, p4, value, p6, modelHash) return invoker.call(0xFBA08C503DD5FA58, pickupHash, posX, posY, posZ, p4, value, p6, modelHash).int end,
	---flags:  
	---8 (1 << 3): place on ground  
	---512 (1 << 9): spin around  
	---  
	---Full list of pickup types by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/pickupTypes.json  
	CREATE_PICKUP_ROTATE = function(pickupHash, posX, posY, posZ, rotX, rotY, rotZ, flag, amount, p9, p10, modelHash) return invoker.call(0x891804727E0A98B7, pickupHash, posX, posY, posZ, rotX, rotY, rotZ, flag, amount, p9, p10, modelHash).int end,
	---  
	FORCE_PICKUP_ROTATE_FACE_UP = function() invoker.call(0x394CD08E31313C28) end,
	---  
	SET_CUSTOM_PICKUP_WEAPON_HASH = function(pickupHash, pickup) invoker.call(0x826D1EE4D1CAFC78, pickupHash, pickup) end,
	---Full list of pickup types by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/pickupTypes.json  
	CREATE_AMBIENT_PICKUP = function(pickupHash, posX, posY, posZ, flags, value, modelHash, p7, p8) return invoker.call(0x673966A0C0FD7171, pickupHash, posX, posY, posZ, flags, value, modelHash, p7, p8).int end,
	---  
	CREATE_NON_NETWORKED_AMBIENT_PICKUP = function(pickupHash, posX, posY, posZ, flags, value, modelHash, p7, p8) return invoker.call(0x9C93764223E29C50, pickupHash, posX, posY, posZ, flags, value, modelHash, p7, p8).int end,
	---  
	BLOCK_PLAYERS_FOR_AMBIENT_PICKUP = function(p0, p1) invoker.call(0x1E3F1B1B891A2AAA, p0, p1) end,
	---Full list of pickup types by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/pickupTypes.json  
	CREATE_PORTABLE_PICKUP = function(pickupHash, x, y, z, placeOnGround, modelHash) return invoker.call(0x2EAF1FDB2FB55698, pickupHash, x, y, z, placeOnGround, modelHash).int end,
	---Full list of pickup types by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/pickupTypes.json  
	CREATE_NON_NETWORKED_PORTABLE_PICKUP = function(pickupHash, x, y, z, placeOnGround, modelHash) return invoker.call(0x125494B98A21AAF7, pickupHash, x, y, z, placeOnGround, modelHash).int end,
	---  
	ATTACH_PORTABLE_PICKUP_TO_PED = function(pickupObject, ped) invoker.call(0x8DC39368BDD57755, pickupObject, ped) end,
	---  
	DETACH_PORTABLE_PICKUP_FROM_PED = function(pickupObject) invoker.call(0xCF463D1E9A0AECB1, pickupObject) end,
	---  
	FORCE_PORTABLE_PICKUP_LAST_ACCESSIBLE_POSITION_SETTING = function(object) invoker.call(0x5CE2E45A5CE2E45A, object) end,
	---  
	HIDE_PORTABLE_PICKUP_WHEN_DETACHED = function(pickupObject, toggle) invoker.call(0x867458251D47CCB2, pickupObject, toggle) end,
	---  
	SET_MAX_NUM_PORTABLE_PICKUPS_CARRIED_BY_PLAYER = function(modelHash, number) invoker.call(0x0BF3B3BD47D79C08, modelHash, number) end,
	---  
	SET_LOCAL_PLAYER_CAN_COLLECT_PORTABLE_PICKUPS = function(toggle) invoker.call(0x78857FC65CADB909, toggle) end,
	---  
	GET_SAFE_PICKUP_COORDS = function(x, y, z, p3, p4) return invoker.call(0x6E16BC2503FF1FF0, x, y, z, p3, p4).scr_vec3 end,
	---Adds an area that seems to be related to pickup physics behavior.  
	---Max amount of areas is 10. Only works in multiplayer.  
	ADD_EXTENDED_PICKUP_PROBE_AREA = function(x, y, z, radius) invoker.call(0xD4A7A435B3710D05, x, y, z, radius) end,
	---Clears all areas created by ADD_EXTENDED_PICKUP_PROBE_AREA  
	CLEAR_EXTENDED_PICKUP_PROBE_AREAS = function() invoker.call(0xB7C6D80FB371659A) end,
	---  
	GET_PICKUP_COORDS = function(pickup) return invoker.call(0x225B8B35C88029B3, pickup).scr_vec3 end,
	---  
	SUPPRESS_PICKUP_SOUND_FOR_PICKUP = function(p0, p1) invoker.call(0x8DCA505A5C196F05, p0, p1) end,
	---Full list of pickup types by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/pickupTypes.json  
	REMOVE_ALL_PICKUPS_OF_TYPE = function(pickupHash) invoker.call(0x27F9D613092159CF, pickupHash) end,
	---  
	HAS_PICKUP_BEEN_COLLECTED = function(pickup) return invoker.call(0x80EC48E6679313F9, pickup).bool end,
	---  
	REMOVE_PICKUP = function(pickup) invoker.call(0x3288D8ACAECD2AB2, pickup) end,
	---Spawns one or more money pickups.  
	---  
	---x: The X-component of the world position to spawn the money pickups at.  
	---y: The Y-component of the world position to spawn the money pickups at.  
	---z: The Z-component of the world position to spawn the money pickups at.  
	---value: The combined value of the pickups (in dollars).  
	---amount: The number of pickups to spawn.  
	---model: The model to use, or 0 for default money model.  
	---  
	---Example:  
	---CREATE_MONEY_PICKUPS(x, y, z, 1000, 3, 0x684a97ae);  
	---  
	---Spawns 3 spray cans that'll collectively give $1000 when picked up. (Three spray cans, each giving $334, $334, $332 = $1000).  
	---  
	---==============================================  
	---  
	---Max is 2000 in MP. So if you put the amount to 20, but the value to $400,000 eg. They will only be able to pickup 20 - $2,000 bags. So, $40,000  
	CREATE_MONEY_PICKUPS = function(x, y, z, value, amount, model) invoker.call(0x0589B5E791CE9B2B, x, y, z, value, amount, model) end,
	---  
	DOES_PICKUP_EXIST = function(pickup) return invoker.call(0xAFC1CA75AD4074D1, pickup).bool end,
	---  
	DOES_PICKUP_OBJECT_EXIST = function(pickupObject) return invoker.call(0xD9EFB6DBF7DAAEA3, pickupObject).bool end,
	---  
	GET_PICKUP_OBJECT = function(pickup) return invoker.call(0x5099BC55630B25AE, pickup).int end,
	---  
	IS_OBJECT_A_PICKUP = function(object) return invoker.call(0xFC481C641EBBD27D, object).bool end,
	---  
	IS_OBJECT_A_PORTABLE_PICKUP = function(object) return invoker.call(0x0378C08504160D0D, object).bool end,
	---Full list of pickup types by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/pickupTypes.json  
	DOES_PICKUP_OF_TYPE_EXIST_IN_AREA = function(pickupHash, x, y, z, radius) return invoker.call(0xF9C36251F6E48E33, pickupHash, x, y, z, radius).bool end,
	---  
	SET_PICKUP_REGENERATION_TIME = function(pickup, duration) invoker.call(0x78015C9B4B3ECC9D, pickup, duration) end,
	---  
	FORCE_PICKUP_REGENERATE = function(p0) invoker.call(0x758A5C1B3B1E1990, p0) end,
	---Disabling/enabling a player from getting pickups. From the scripts:  
	---  
	---OBJECT::SET_PLAYER_PERMITTED_TO_COLLECT_PICKUPS_OF_TYPE(PLAYER::PLAYER_ID(), ${pickup_portable_package}, 0);  
	---OBJECT::SET_PLAYER_PERMITTED_TO_COLLECT_PICKUPS_OF_TYPE(PLAYER::PLAYER_ID(), ${pickup_portable_package}, 0);  
	---OBJECT::SET_PLAYER_PERMITTED_TO_COLLECT_PICKUPS_OF_TYPE(PLAYER::PLAYER_ID(), ${pickup_portable_package}, 1);  
	---OBJECT::SET_PLAYER_PERMITTED_TO_COLLECT_PICKUPS_OF_TYPE(PLAYER::PLAYER_ID(), ${pickup_portable_package}, 0);  
	---OBJECT::SET_PLAYER_PERMITTED_TO_COLLECT_PICKUPS_OF_TYPE(PLAYER::PLAYER_ID(), ${pickup_armour_standard}, 0);  
	---OBJECT::SET_PLAYER_PERMITTED_TO_COLLECT_PICKUPS_OF_TYPE(PLAYER::PLAYER_ID(), ${pickup_armour_standard}, 1);  
	---  
	---Full list of pickup types by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/pickupTypes.json  
	SET_PLAYER_PERMITTED_TO_COLLECT_PICKUPS_OF_TYPE = function(player, pickupHash, toggle) invoker.call(0x616093EC6B139DD9, player, pickupHash, toggle) end,
	---Maximum amount of pickup models that can be disallowed is 30.  
	SET_LOCAL_PLAYER_PERMITTED_TO_COLLECT_PICKUPS_WITH_MODEL = function(modelHash, toggle) invoker.call(0x88EAEC617CD26926, modelHash, toggle) end,
	---Full list of pickup types by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/pickupTypes.json  
	ALLOW_ALL_PLAYERS_TO_COLLECT_PICKUPS_OF_TYPE = function(pickupHash) invoker.call(0xFDC07C58E8AAB715, pickupHash) end,
	---  
	SET_TEAM_PICKUP_OBJECT = function(object, p1, p2) invoker.call(0x53E0DF1A2A3CF0CA, object, p1, p2) end,
	---  
	PREVENT_COLLECTION_OF_PORTABLE_PICKUP = function(object, p1, p2) invoker.call(0x92AEFB5F6E294023, object, p1, p2) end,
	---  
	SET_PICKUP_OBJECT_GLOW_WHEN_UNCOLLECTABLE = function(pickup, toggle) invoker.call(0x27F248C3FEBFAAD3, pickup, toggle) end,
	---  
	_SET_PICKUP_GLOW_DISABLED = function(pickup, toggle) invoker.call(0x08BD8BA5BDE2C2FA, pickup, toggle) end,
	---p1 is always 0.51. This native is called before SET_PICKUP_REGENERATION_TIME in all occurances.  
	SET_PICKUP_GLOW_OFFSET = function(pickup, p1) invoker.call(0x0596843B34B95CE5, pickup, p1) end,
	---p1 is always -0.2 in scripts and p2 is always true in scripts.  
	SET_PICKUP_OBJECT_GLOW_OFFSET = function(pickup, p1, p2) invoker.call(0xA08FE5E49BDC39DD, pickup, p1, p2) end,
	---  
	SET_OBJECT_GLOW_IN_SAME_TEAM = function(pickup) invoker.call(0x62454A641B41F3C5, pickup) end,
	---  
	SET_PICKUP_OBJECT_ARROW_MARKER = function(pickup, toggle) invoker.call(0x39A5FB7EAF150840, pickup, toggle) end,
	---  
	ALLOW_PICKUP_ARROW_MARKER_WHEN_UNCOLLECTABLE = function(pickup, toggle) invoker.call(0x834344A414C7C85D, pickup, toggle) end,
	---  
	GET_DEFAULT_AMMO_FOR_WEAPON_PICKUP = function(pickupHash) return invoker.call(0xDB41D07A45A6D4B7, pickupHash).int end,
	---  
	SET_PICKUP_GENERATION_RANGE_MULTIPLIER = function(multiplier) invoker.call(0x318516E02DE3ECE2, multiplier) end,
	---  
	GET_PICKUP_GENERATION_RANGE_MULTIPLIER = function() return invoker.call(0xB3ECA65C7317F174).float end,
	---  
	SET_ONLY_ALLOW_AMMO_COLLECTION_WHEN_LOW = function(p0) invoker.call(0x31F924B53EADDF65, p0) end,
	---  
	SET_PICKUP_UNCOLLECTABLE = function(pickup, toggle) invoker.call(0x1C1B69FAE509BA97, pickup, toggle) end,
	---  
	SET_PICKUP_TRANSPARENT_WHEN_UNCOLLECTABLE = function(pickup, toggle) invoker.call(0x858EC9FD25DE04AA, pickup, toggle) end,
	---  
	SET_PICKUP_HIDDEN_WHEN_UNCOLLECTABLE = function(pickup, toggle) invoker.call(0x3ED2B83AB2E82799, pickup, toggle) end,
	---  
	SET_PICKUP_OBJECT_TRANSPARENT_WHEN_UNCOLLECTABLE = function(pickup, toggle) invoker.call(0x8881C98A31117998, pickup, toggle) end,
	---p0 is either 0 or 50 in scripts.  
	SET_PICKUP_OBJECT_ALPHA_WHEN_TRANSPARENT = function(p0) invoker.call(0x8CFF648FBD7330F1, p0) end,
	---  
	SET_PORTABLE_PICKUP_PERSIST = function(pickup, toggle) invoker.call(0x46F3ADD1E2D5BAF2, pickup, toggle) end,
	---  
	ALLOW_PORTABLE_PICKUP_TO_MIGRATE_TO_NON_PARTICIPANTS = function(pickup, toggle) invoker.call(0x641F272B52E2F0F8, pickup, toggle) end,
	---  
	FORCE_ACTIVATE_PHYSICS_ON_UNFIXED_PICKUP = function(pickup, toggle) invoker.call(0x4C134B4DF76025D0, pickup, toggle) end,
	---  
	ALLOW_PICKUP_BY_NONE_PARTICIPANT = function(pickup, toggle) invoker.call(0xAA059C615DE9DD03, pickup, toggle) end,
	---enum ePickupRewardType  
	---{  
	---    PICKUP_REWARD_TYPE_AMMO = (1 << 0),  
	---    PICKUP_REWARD_TYPE_BULLET_MP = (1 << 1),  
	---    PICKUP_REWARD_TYPE_MISSILE_MP = (1 << 2),  
	---    PICKUP_REWARD_TYPE_GRENADE_LAUNCHER_MP = (1 << 3),  
	---    PICKUP_REWARD_TYPE_ARMOUR = (1 << 4),  
	---    PICKUP_REWARD_TYPE_HEALTH = (1 << 5),  
	---    PICKUP_REWARD_TYPE_HEALTH_VARIABLE = PICKUP_REWARD_TYPE_HEALTH,  
	---    PICKUP_REWARD_TYPE_MONEY_FIXED = (1 << 6),  
	---    PICKUP_REWARD_TYPE_MONEY_VARIABLE = PICKUP_REWARD_TYPE_MONEY_FIXED,  
	---    PICKUP_REWARD_TYPE_WEAPON = (1 << 7),  
	---    PICKUP_REWARD_TYPE_STAT = (1 << 8),  
	---    PICKUP_REWARD_TYPE_STAT_VARIABLE = PICKUP_REWARD_TYPE_STAT,  
	---    PICKUP_REWARD_TYPE_VEHICLE_FIX = (1 << 9),  
	---    PICKUP_REWARD_TYPE_FIREWORK_MP = (1 << 10),  
	---};  
	SUPPRESS_PICKUP_REWARD_TYPE = function(rewardType, suppress) invoker.call(0xF92099527DB8E2A7, rewardType, suppress) end,
	---  
	CLEAR_ALL_PICKUP_REWARD_TYPE_SUPPRESSION = function() invoker.call(0xA2C1F5E92AFE49ED) end,
	---  
	CLEAR_PICKUP_REWARD_TYPE_SUPPRESSION = function(rewardType) invoker.call(0x762DB2D380B48D04, rewardType) end,
	---draws circular marker at pos  
	----1 = none  
	---0 = red  
	---1 = green  
	---2 = blue  
	---3 = green larger  
	---4 = nothing  
	---5 = green small  
	RENDER_FAKE_PICKUP_GLOW = function(x, y, z, colorIndex) invoker.call(0x3430676B11CDF21D, x, y, z, colorIndex) end,
	---  
	SET_PICKUP_OBJECT_COLLECTABLE_IN_VEHICLE = function(pickup) invoker.call(0x7813E8B8C4AE4799, pickup) end,
	---  
	SET_PICKUP_TRACK_DAMAGE_EVENTS = function(pickup, toggle) invoker.call(0xBFFE53AE7E67FCDC, pickup, toggle) end,
	---Sets entity+38 to C (when false) or 0xFF3f (when true)  
	SET_ENTITY_FLAG_SUPPRESS_SHADOW = function(entity, toggle) invoker.call(0xD05A3241B9A86F19, entity, toggle) end,
	---  
	SET_ENTITY_FLAG_RENDER_SMALL_SHADOW = function(object, toggle) invoker.call(0xB2D0BDE54F0E8E5A, object, toggle) end,
	---Full list of pickup types by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/pickupTypes.json  
	GET_WEAPON_TYPE_FROM_PICKUP_TYPE = function(pickupHash) return invoker.call(0x08F96CA6C551AD51, pickupHash).int end,
	---Returns the pickup hash for the given weapon hash  
	GET_PICKUP_TYPE_FROM_WEAPON_HASH = function(weaponHash) return invoker.call(0xD6429A016084F1A5, weaponHash).int end,
	---  
	IS_PICKUP_WEAPON_OBJECT_VALID = function(object) return invoker.call(0x11D1E53A726891FE, object).bool end,
	---  
	GET_OBJECT_TINT_INDEX = function(object) return invoker.call(0xE84EB93729C5F36A, object).int end,
	---enum ObjectPaintVariants  
	---{  
	--- Pacific = 0,  
	---  Azure = 1,  
	---    Nautical = 2,  
	--- Continental = 3,  
	---  Battleship = 4,  
	---   Intrepid = 5,  
	--- Uniform = 6,  
	---  Classico = 7,  
	--- Mediterranean = 8,  
	---    Command = 9,  
	---  Mariner = 10,  
	--- Ruby = 11,  
	---    Vintage = 12,  
	--- Pristine = 13,  
	---    Merchant = 14,  
	---    Voyager = 15  
	---};  
	SET_OBJECT_TINT_INDEX = function(object, textureVariation) invoker.call(0x971DA0055324D033, object, textureVariation) end,
	---  
	SET_TINT_INDEX_CLOSEST_BUILDING_OF_TYPE = function(x, y, z, radius, modelHash, textureVariation) return invoker.call(0xF12E33034D887F66, x, y, z, radius, modelHash, textureVariation).bool end,
	---  
	SET_PROP_TINT_INDEX = function(p0, p1) invoker.call(0x31574B1B41268673, p0, p1) end,
	---  
	SET_PROP_LIGHT_COLOR = function(object, p1, r, g, b) return invoker.call(0x5F048334B4A4E774, object, p1, r, g, b).bool end,
	---  
	IS_PROP_LIGHT_OVERRIDEN = function(object) return invoker.call(0xADF084FB8F075D06, object).bool end,
	---  
	SET_OBJECT_IS_VISIBLE_IN_MIRRORS = function(object, toggle) invoker.call(0x3B2FD68DB5F8331C, object, toggle) end,
	---  
	SET_OBJECT_SPEED_BOOST_AMOUNT = function(object, p1) invoker.call(0x96EE0EBA0163DF80, object, p1) end,
	---  
	SET_OBJECT_SPEED_BOOST_DURATION = function(object, duration) invoker.call(0xDF6CA0330F2E737B, object, duration) end,
	---returns pickup hash.  
	---  
	---Full list of pickup types by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/pickupTypes.json  
	CONVERT_OLD_PICKUP_TYPE_TO_NEW = function(pickupHash) return invoker.call(0x5EAAD83F8CFB4575, pickupHash).int end,
	---  
	SET_FORCE_OBJECT_THIS_FRAME = function(x, y, z, p3) invoker.call(0xF538081986E49E9D, x, y, z, p3) end,
	---  
	ONLY_CLEAN_UP_OBJECT_WHEN_OUT_OF_RANGE = function(object) invoker.call(0xADBE4809F19F927A, object) end,
	---  
	SET_DISABLE_COLLISIONS_BETWEEN_CARS_AND_CAR_PARACHUTE = function(p0) invoker.call(0x8CAAB2BD3EA58BD4, p0) end,
	---  
	SET_PROJECTILES_SHOULD_EXPLODE_ON_CONTACT = function(entity, p1) invoker.call(0x63ECF581BC70E363, entity, p1) end,
	---Activate the physics to: "xs_prop_arena_{flipper,wall,bollard,turntable,pit}"  
	SET_DRIVE_ARTICULATED_JOINT = function(object, toggle, p2) invoker.call(0x911024442F4898F0, object, toggle, p2) end,
	---  
	SET_DRIVE_ARTICULATED_JOINT_WITH_INFLICTOR = function(object, toggle, p2, ped) invoker.call(0xB20834A7DD3D8896, object, toggle, p2, ped) end,
	---  
	SET_OBJECT_IS_A_PRESSURE_PLATE = function(object, toggle) invoker.call(0x734E1714D077DA9A, object, toggle) end,
	---  
	SET_WEAPON_IMPACTS_APPLY_GREATER_FORCE = function(object, p1) invoker.call(0x1A6CBB06E2D0D79D, object, p1) end,
	---  
	GET_IS_ARTICULATED_JOINT_AT_MIN_ANGLE = function(object, p1) return invoker.call(0x43C677F1E1158005, object, p1).bool end,
	---  
	GET_IS_ARTICULATED_JOINT_AT_MAX_ANGLE = function(p0, p1) return invoker.call(0x3BD770D281982DB5, p0, p1).bool end,
	---  
	SET_IS_OBJECT_ARTICULATED = function(object, toggle) invoker.call(0x1C57C94A6446492A, object, toggle) end,
	---  
	SET_IS_OBJECT_BALL = function(object, toggle) invoker.call(0xB5B7742424BD4445, object, toggle) end,
}
PAD={
	---control: 0: PLAYER_CONTROL, 1: CAMERA_CONTROL, 2: FRONTEND_CONTROL  
	---For more info, see https://docs.fivem.net/docs/game-references/controls/  
	IS_CONTROL_ENABLED = function(control, action) return invoker.call(0x1CEA6BFDF248E5D9, control, action).bool end,
	---Returns whether a control is currently pressed.  
	---control: see IS_CONTROL_ENABLED  
	IS_CONTROL_PRESSED = function(control, action) return invoker.call(0xF3A21BCD95725A4A, control, action).bool end,
	---Returns whether a control is currently _not_ pressed.  
	---control: see IS_CONTROL_ENABLED  
	IS_CONTROL_RELEASED = function(control, action) return invoker.call(0x648EE3E7F38877DD, control, action).bool end,
	---Returns whether a control was newly pressed since the last check.  
	---control: see IS_CONTROL_ENABLED  
	IS_CONTROL_JUST_PRESSED = function(control, action) return invoker.call(0x580417101DDB492F, control, action).bool end,
	---Returns whether a control was newly released since the last check.  
	---control: see IS_CONTROL_ENABLED  
	IS_CONTROL_JUST_RELEASED = function(control, action) return invoker.call(0x50F940259D3841E6, control, action).bool end,
	---  
	_IS_CONTROL_HELD_DOWN = function(control, action, duration) return invoker.call(0xE9CB8C56E90D5079, control, action, duration).bool end,
	---control: see IS_CONTROL_ENABLED  
	GET_CONTROL_VALUE = function(control, action) return invoker.call(0xD95E79E8686D2C27, control, action).int end,
	---Returns the value of GET_CONTROL_VALUE normalized (i.e. a real number value between -1 and 1)  
	---  
	---control: see IS_CONTROL_ENABLED  
	GET_CONTROL_NORMAL = function(control, action) return invoker.call(0xEC3C9B8D5327B563, control, action).float end,
	---  
	SET_USE_ADJUSTED_MOUSE_COORDS = function(toggle) invoker.call(0x5B73C77D9EB66E24, toggle) end,
	---Seems to return values between -1 and 1 for controls like gas and steering.  
	---  
	---control: see IS_CONTROL_ENABLED  
	GET_CONTROL_UNBOUND_NORMAL = function(control, action) return invoker.call(0x5B84D09CEC5209C5, control, action).float end,
	---This is for simulating player input.  
	---value is a float value from 0 - 1  
	---  
	---control: see IS_CONTROL_ENABLED  
	SET_CONTROL_VALUE_NEXT_FRAME = function(control, action, value) return invoker.call(0xE8A25867FBA3B05E, control, action, value).bool end,
	---control: see IS_CONTROL_ENABLED  
	IS_DISABLED_CONTROL_PRESSED = function(control, action) return invoker.call(0xE2587F8CBBD87B1D, control, action).bool end,
	---control: see IS_CONTROL_ENABLED  
	IS_DISABLED_CONTROL_RELEASED = function(control, action) return invoker.call(0xFB6C4072E9A32E92, control, action).bool end,
	---control: see IS_CONTROL_ENABLED  
	IS_DISABLED_CONTROL_JUST_PRESSED = function(control, action) return invoker.call(0x91AEF906BCA88877, control, action).bool end,
	---control: see IS_CONTROL_ENABLED  
	IS_DISABLED_CONTROL_JUST_RELEASED = function(control, action) return invoker.call(0x305C8DCD79DA8B0F, control, action).bool end,
	---control: see IS_CONTROL_ENABLED  
	GET_DISABLED_CONTROL_NORMAL = function(control, action) return invoker.call(0x11E65974A982637C, control, action).float end,
	---The "disabled" variant of GET_CONTROL_UNBOUND_NORMAL.  
	---  
	---control: see IS_CONTROL_ENABLED  
	GET_DISABLED_CONTROL_UNBOUND_NORMAL = function(control, action) return invoker.call(0x4F8A26A890FD62FB, control, action).float end,
	---Returns time in ms since last input.  
	---  
	---control: see IS_CONTROL_ENABLED  
	GET_CONTROL_HOW_LONG_AGO = function(control) return invoker.call(0xD7D22F5592AED8BA, control).int end,
	---control: unused parameter  
	IS_USING_KEYBOARD_AND_MOUSE = function(control) return invoker.call(0xA571D46727E2B718, control).bool end,
	---control: see IS_CONTROL_ENABLED  
	IS_USING_CURSOR = function(control) return invoker.call(0x13337B38DB572509, control).bool end,
	---  
	SET_CURSOR_POSITION = function(x, y) return invoker.call(0xFC695459D4D0E219, x, y).bool end,
	---control: see IS_CONTROL_ENABLED  
	---  
	---Hardcoded to return false.  
	IS_USING_REMOTE_PLAY = function(control) return invoker.call(0x23F09EADC01449D6, control).bool end,
	---control: unused parameter  
	HAVE_CONTROLS_CHANGED = function(control) return invoker.call(0x6CD79468A1E595C6, control).bool end,
	---allowXOSwap appears to always be true.  
	---  
	---EG:  
	---GET_CONTROL_INSTRUCTIONAL_BUTTON (2, 201, 1) /*INPUT_FRONTEND_ACCEPT (e.g. Enter button)*/  
	---GET_CONTROL_INSTRUCTIONAL_BUTTON (2, 202, 1) /*INPUT_FRONTEND_CANCEL (e.g. ESC button)*/  
	---GET_CONTROL_INSTRUCTIONAL_BUTTON (2, 51, 1) /*INPUT_CONTEXT (e.g. E button)*/  
	---  
	---gtaforums.com/topic/819070-c-draw-instructional-buttons-scaleform-movie/#entry1068197378  
	---  
	---control: unused parameter  
	GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING = function(control, action, allowXOSwap) return invoker.call(0x0499D7B09FC9B407, control, action, allowXOSwap).str end,
	---control: unused parameter  
	GET_CONTROL_GROUP_INSTRUCTIONAL_BUTTONS_STRING = function(control, controlGroup, allowXOSwap) return invoker.call(0x80C2FD58D720C801, control, controlGroup, allowXOSwap).str end,
	---control: see IS_CONTROL_ENABLED  
	SET_CONTROL_LIGHT_EFFECT_COLOR = function(control, red, green, blue) invoker.call(0x8290252FFF36ACB5, control, red, green, blue) end,
	---control: see IS_CONTROL_ENABLED  
	CLEAR_CONTROL_LIGHT_EFFECT = function(control) invoker.call(0xCB0360EFEFB2580D, control) end,
	---control: see IS_CONTROL_ENABLED  
	---duration in milliseconds   
	---frequency should range from about 10 (slow vibration) to 255 (very fast)  
	---  
	---example:  
	---SET_CONTROL_SHAKE(PLAYER_CONTROL, 100, 200);  
	SET_CONTROL_SHAKE = function(control, duration, frequency) invoker.call(0x48B3886C1358D0D5, control, duration, frequency) end,
	---Does nothing (it's a nullsub).  
	SET_CONTROL_TRIGGER_SHAKE = function(control, leftDuration, leftFrequency, rightDuration, rightFrequency) invoker.call(0x14D29BB12D47F68C, control, leftDuration, leftFrequency, rightDuration, rightFrequency) end,
	---control: see IS_CONTROL_ENABLED  
	STOP_CONTROL_SHAKE = function(control) invoker.call(0x38C16A305E8CDC8D, control) end,
	---control: see IS_CONTROL_ENABLED  
	SET_CONTROL_SHAKE_SUPPRESSED_ID = function(control, uniqueId) invoker.call(0xF239400E16C23E08, control, uniqueId) end,
	---control: see IS_CONTROL_ENABLED  
	CLEAR_CONTROL_SHAKE_SUPPRESSED_ID = function(control) invoker.call(0xA0CEFCEA390AAB9B, control) end,
	---  
	IS_LOOK_INVERTED = function() return invoker.call(0x77B612531280010D).bool end,
	---Used with IS_LOOK_INVERTED() and negates its affect.  
	---  
	-----  
	---  
	---Not sure how the person above got that description, but here's an actual example:  
	---  
	---if (PAD::IS_USING_KEYBOARD_AND_MOUSE(2)) {  
	---    if (a_5) {  
	---        if (PAD::IS_LOOK_INVERTED()) {  
	---            a_3 *= -1;  
	---        }  
	---        if (PAD::IS_MOUSE_LOOK_INVERTED()) {  
	---            a_3 *= -1;  
	---        }  
	---    }  
	---}  
	IS_MOUSE_LOOK_INVERTED = function() return invoker.call(0xE1615EC03B3BB4FD).bool end,
	---Hard-coded to return 3 if using KBM, otherwise same behavior as GET_LOCAL_PLAYER_GAMEPAD_AIM_STATE.  
	GET_LOCAL_PLAYER_AIM_STATE = function() return invoker.call(0xBB41AFBBBC0A0287).int end,
	---Returns the local player's targeting mode. See PLAYER::SET_PLAYER_TARGETING_MODE.  
	GET_LOCAL_PLAYER_GAMEPAD_AIM_STATE = function() return invoker.call(0x59B9A7AF4C95133C).int end,
	---  
	GET_IS_USING_ALTERNATE_HANDBRAKE = function() return invoker.call(0x25AAA32BDC98F2A3).bool end,
	---Returns profile setting 225.  
	GET_IS_USING_ALTERNATE_DRIVEBY = function() return invoker.call(0x0F70731BACCFBB96).bool end,
	---Returns profile setting 17.  
	GET_ALLOW_MOVEMENT_WHILE_ZOOMED = function() return invoker.call(0xFC859E2374407556).bool end,
	---  
	SET_PLAYERPAD_SHAKES_WHEN_CONTROLLER_DISABLED = function(toggle) invoker.call(0x798FDEB5B1575088, toggle) end,
	---control: see IS_CONTROL_ENABLED  
	SET_INPUT_EXCLUSIVE = function(control, action) invoker.call(0xEDE476E5EE29EDB1, control, action) end,
	---control: see IS_CONTROL_ENABLED  
	DISABLE_CONTROL_ACTION = function(control, action, disableRelatedActions) invoker.call(0xFE99B66D079CF6BC, control, action, disableRelatedActions) end,
	---control: see IS_CONTROL_ENABLED  
	ENABLE_CONTROL_ACTION = function(control, action, enableRelatedActions) invoker.call(0x351220255D64C155, control, action, enableRelatedActions) end,
	---control: see IS_CONTROL_ENABLED  
	DISABLE_ALL_CONTROL_ACTIONS = function(control) invoker.call(0x5F4B6931816E599B, control) end,
	---control: see IS_CONTROL_ENABLED  
	ENABLE_ALL_CONTROL_ACTIONS = function(control) invoker.call(0xA5FFE9B05F199DE7, control) end,
	---Used in carsteal3 script with schemeName = "Carsteal4_spycar".  
	INIT_PC_SCRIPTED_CONTROLS = function(schemeName) return invoker.call(0x3D42B92563939375, schemeName).bool end,
	---Same as INIT_PC_SCRIPTED_CONTROLS  
	SWITCH_PC_SCRIPTED_CONTROLS = function(schemeName) return invoker.call(0x4683149ED1DDE7A1, schemeName).bool end,
	---  
	SHUTDOWN_PC_SCRIPTED_CONTROLS = function() invoker.call(0x643ED62D5EA3BEBD) end,
	---control: see IS_CONTROL_ENABLED  
	ALLOW_ALTERNATIVE_SCRIPT_CONTROLS_LAYOUT = function(control) invoker.call(0x7F4724035FDCA1DD, control) end,
	---Returns 0 (default) or 5 (alternate/DualSense).  
	_GET_GAMEPAD_TYPE = function() return invoker.call(0x18E474F40EF05F10).int end,
}
PATHFIND={
	---When nodeEnabled is set to false, all nodes in the area get disabled.  
	---`GET_VEHICLE_NODE_IS_SWITCHED_OFF` returns true afterwards.  
	---If it's true, `GET_VEHICLE_NODE_IS_SWITCHED_OFF` returns false.  
	SET_ROADS_IN_AREA = function(x1, y1, z1, x2, y2, z2, nodeEnabled, unknown2) invoker.call(0xBF1A602B5BA52FEE, x1, y1, z1, x2, y2, z2, nodeEnabled, unknown2) end,
	---unknown3 is related to `SEND_SCRIPT_WORLD_STATE_EVENT > CNetworkRoadNodeWorldStateData` in networked environments.  
	---See IS_POINT_IN_ANGLED_AREA for the definition of an angled area.  
	SET_ROADS_IN_ANGLED_AREA = function(x1, y1, z1, x2, y2, z2, width, unknown1, unknown2, unknown3) invoker.call(0x1A5AA1208AF5DB59, x1, y1, z1, x2, y2, z2, width, unknown1, unknown2, unknown3) end,
	---  
	SET_PED_PATHS_IN_AREA = function(x1, y1, z1, x2, y2, z2, p6, p7) invoker.call(0x34F060F4BF92E018, x1, y1, z1, x2, y2, z2, p6, p7) end,
	---Flags are:  
	---1 = 1 = B02_IsFootpath  
	---2 = 4 = !B15_InteractionUnk  
	---4 = 0x20 = !B14_IsInterior  
	---8 = 0x40 = !B07_IsWater  
	---16 = 0x200 = B17_IsFlatGround  
	---When onGround == true outPosition is a position located on the nearest pavement.  
	---  
	---When a safe coord could not be found the result of a function is false and outPosition == Vector3.Zero.  
	---  
	---In the scripts these flags are used: 0, 14, 12, 16, 20, 21, 28. 0 is most commonly used, then 16.   
	---  
	---16 works for me, 0 crashed the script.  
	GET_SAFE_COORD_FOR_PED = function(x, y, z, onGround, outPosition, flags) return invoker.call(0xB61C8E878A4199CA, x, y, z, onGround, outPosition, flags).bool end,
	---https://gtaforums.com/topic/843561-pathfind-node-types  
	GET_CLOSEST_VEHICLE_NODE = function(x, y, z, outPosition, nodeFlags, p5, p6) return invoker.call(0x240A18690AE96513, x, y, z, outPosition, nodeFlags, p5, p6).bool end,
	---Get the closest vehicle node to a given position.  
	GET_CLOSEST_MAJOR_VEHICLE_NODE = function(x, y, z, outPosition, unknown1, unknown2) return invoker.call(0x2EABE3B06F58C1BE, x, y, z, outPosition, unknown1, unknown2).bool end,
	---p5, p6 and p7 seems to be about the same as p4, p5 and p6 for GET_CLOSEST_VEHICLE_NODE. p6 and/or p7 has something to do with finding a node on the same path/road and same direction(at least for this native, something to do with the heading maybe). Edit this when you find out more.  
	---  
	---nodeType: 0 = main roads, 1 = any dry path, 3 = water  
	---p6 is always 3.0  
	---p7 is always 0  
	---  
	---gtaforums.com/topic/843561-pathfind-node-types  
	---  
	---Example of usage, moving vehicle to closest path/road:  
	---Vector3 coords = ENTITY::GET_ENTITY_COORDS(playerVeh, true);  
	---Vector3 closestVehicleNodeCoords;   
	---float roadHeading;   
	---PATHFIND::GET_CLOSEST_VEHICLE_NODE_WITH_HEADING(coords.x, coords.y, coords.z, &closestVehicleNodeCoords, &roadHeading, 1, 3, 0);   
	---ENTITY::SET_ENTITY_HEADING(playerVeh, roadHeading);  
	---ENTITY::SET_ENTITY_COORDS(playerVeh, closestVehicleNodeCoords.x, closestVehicleNodeCoords.y, closestVehicleNodeCoords.z, 1, 0, 0, 1);  
	---VEHICLE::SET_VEHICLE_ON_GROUND_PROPERLY(playerVeh);  
	---  
	---------------------------------------------------------------------  
	---C# Example (ins1de) : https://pastebin.com/fxtMWAHD  
	GET_CLOSEST_VEHICLE_NODE_WITH_HEADING = function(x, y, z, outPosition, outHeading, nodeType, p6, p7) return invoker.call(0xFF071FB798B803B0, x, y, z, outPosition, outHeading, nodeType, p6, p7).bool end,
	---  
	GET_NTH_CLOSEST_VEHICLE_NODE = function(x, y, z, nthClosest, outPosition, nodeFlags, unknown1, unknown2) return invoker.call(0xE50E52416CCF948B, x, y, z, nthClosest, outPosition, nodeFlags, unknown1, unknown2).bool end,
	---Returns the id.  
	GET_NTH_CLOSEST_VEHICLE_NODE_ID = function(x, y, z, nth, nodeFlags, p5, p6) return invoker.call(0x22D7275A79FE8215, x, y, z, nth, nodeFlags, p5, p6).int end,
	---Get the nth closest vehicle node and its heading.  
	GET_NTH_CLOSEST_VEHICLE_NODE_WITH_HEADING = function(x, y, z, nthClosest, outPosition, outHeading, outNumLanes, nodeFlags, unknown3, unknown4) return invoker.call(0x80CA6A8B6C094CC4, x, y, z, nthClosest, outPosition, outHeading, outNumLanes, nodeFlags, unknown3, unknown4).bool end,
	---  
	GET_NTH_CLOSEST_VEHICLE_NODE_ID_WITH_HEADING = function(x, y, z, nthClosest, outPosition, outHeading, nodeFlags, p7, p8) return invoker.call(0x6448050E9C2A7207, x, y, z, nthClosest, outPosition, outHeading, nodeFlags, p7, p8).int end,
	---See gtaforums.com/topic/843561-pathfind-node-types for node type info. 0 = paved road only, 1 = any road, 3 = water  
	---  
	---p10 always equals 3.0  
	---p11 always equals 0  
	GET_NTH_CLOSEST_VEHICLE_NODE_FAVOUR_DIRECTION = function(x, y, z, desiredX, desiredY, desiredZ, nthClosest, outPosition, outHeading, nodeFlags, p10, p11) return invoker.call(0x45905BE8654AE067, x, y, z, desiredX, desiredY, desiredZ, nthClosest, outPosition, outHeading, nodeFlags, p10, p11).bool end,
	---Gets the density and flags of the closest node to the specified position.  
	---Density is a value between 0 and 15, indicating how busy the road is.  
	---Flags is a bit field.  
	GET_VEHICLE_NODE_PROPERTIES = function(x, y, z, density, flags) return invoker.call(0x0568566ACBB5DEDC, x, y, z, density, flags).bool end,
	---Returns true if the id is non zero.  
	IS_VEHICLE_NODE_ID_VALID = function(vehicleNodeId) return invoker.call(0x1EAF30FCFBF5AF74, vehicleNodeId).bool end,
	---Calling this with an invalid node id, will crash the game.  
	---Note that IS_VEHICLE_NODE_ID_VALID simply checks if nodeId is not zero. It does not actually ensure that the id is valid.  
	---Eg. IS_VEHICLE_NODE_ID_VALID(1) will return true, but will crash when calling GET_VEHICLE_NODE_POSITION().  
	GET_VEHICLE_NODE_POSITION = function(nodeId, outPosition) invoker.call(0x703123E5E7D429C2, nodeId, outPosition) end,
	---Returns false for nodes that aren't used for GPS routes.  
	---Example:  
	---Nodes in Fort Zancudo and LSIA are false  
	GET_VEHICLE_NODE_IS_GPS_ALLOWED = function(nodeID) return invoker.call(0xA2AE5C478B96E3B6, nodeID).bool end,
	---Returns true when the node is Offroad. Alleys, some dirt roads, and carparks return true.  
	---Normal roads where plenty of Peds spawn will return false  
	GET_VEHICLE_NODE_IS_SWITCHED_OFF = function(nodeID) return invoker.call(0x4F5070AA58F69279, nodeID).bool end,
	---p1 seems to be always 1.0f in the scripts  
	GET_CLOSEST_ROAD = function(x, y, z, p3, p4, p5, p6, p7, p8, p9, p10) return invoker.call(0x132F52BBA570FE92, x, y, z, p3, p4, p5, p6, p7, p8, p9, p10).bool end,
	---  
	LOAD_ALL_PATH_NODES = function(set) return invoker.call(0xC2AB6BFE34E92F8B, set).bool end,
	---  
	SET_ALLOW_STREAM_PROLOGUE_NODES = function(toggle) invoker.call(0x228E5C6AD4D74BFD, toggle) end,
	---Activates Cayo Perico path nodes if passed `1`. GPS navigation will start working, maybe more stuff will change, not sure. It seems if you try to unload (pass `0`) when close to the island, your game might crash.  
	SET_ALLOW_STREAM_HEIST_ISLAND_NODES = function(type) invoker.call(0xF74B1FFA4A15FBEA, type) end,
	---  
	ARE_NODES_LOADED_FOR_AREA = function(x1, y1, x2, y2) return invoker.call(0xF7B79A50B905A30D, x1, y1, x2, y2).bool end,
	---Used internally for long range tasks  
	REQUEST_PATH_NODES_IN_AREA_THIS_FRAME = function(x1, y1, x2, y2) return invoker.call(0x07FB139B592FA687, x1, y1, x2, y2).bool end,
	---  
	SET_ROADS_BACK_TO_ORIGINAL = function(p0, p1, p2, p3, p4, p5, p6) invoker.call(0x1EE7063B80FFC77C, p0, p1, p2, p3, p4, p5, p6) end,
	---See IS_POINT_IN_ANGLED_AREA for the definition of an angled area.  
	---bool p7 - always 1  
	SET_ROADS_BACK_TO_ORIGINAL_IN_ANGLED_AREA = function(x1, y1, z1, x2, y2, z2, width, p7) invoker.call(0x0027501B9F3B407E, x1, y1, z1, x2, y2, z2, width, p7) end,
	---  
	SET_AMBIENT_PED_RANGE_MULTIPLIER_THIS_FRAME = function(multiplier) invoker.call(0x0B919E1FB47CC4E0, multiplier) end,
	---  
	ADJUST_AMBIENT_PED_SPAWN_DENSITIES_THIS_FRAME = function(p0, p1, p2, p3, p4, p5, p6) invoker.call(0xAA76052DDA9BFC3E, p0, p1, p2, p3, p4, p5, p6) end,
	---p6 is always 0  
	SET_PED_PATHS_BACK_TO_ORIGINAL = function(x1, y1, z1, x2, y2, z2, p6) invoker.call(0xE04B48F2CC926253, x1, y1, z1, x2, y2, z2, p6) end,
	---  
	GET_RANDOM_VEHICLE_NODE = function(x, y, z, radius, p4, p5, p6, outPosition, nodeId) return invoker.call(0x93E0DB8440B73A7D, x, y, z, radius, p4, p5, p6, outPosition, nodeId).bool end,
	---  
	GET_SPAWN_COORDS_FOR_VEHICLE_NODE = function(nodeAddress, towardsCoorsX, towardsCoorsY, towardsCoorsZ, centrePoint, heading) invoker.call(0x809549AFC7AEC597, nodeAddress, towardsCoorsX, towardsCoorsY, towardsCoorsZ, centrePoint, heading) end,
	---Determines the name of the street which is the closest to the given coordinates.  
	---  
	---x,y,z - the coordinates of the street  
	---streetName - returns a hash to the name of the street the coords are on  
	---crossingRoad - if the coordinates are on an intersection, a hash to the name of the crossing road  
	---  
	---Note: the names are returned as hashes, the strings can be returned using the function HUD::GET_STREET_NAME_FROM_HASH_KEY.  
	GET_STREET_NAME_AT_COORD = function(x, y, z, streetName, crossingRoad) invoker.call(0x2EB41072B4C1E4C0, x, y, z, streetName, crossingRoad) end,
	---p3 is 0 in the only game script occurrence (trevor3) but 1 doesn't seem to make a difference  
	---  
	---distToNxJunction seems to be the distance in metres * 10.0f  
	---  
	---direction:  
	---0 = This happens randomly during the drive for seemingly no reason but if you consider that this native is only used in trevor3, it seems to mean "Next frame, stop whatever's being said and tell the player the direction."  
	---1 = Route is being calculated or the player is going in the wrong direction  
	---2 = Please Proceed the Highlighted Route  
	---3 = In (distToNxJunction) Turn Left  
	---4 = In (distToNxJunction) Turn Right  
	---5 = In (distToNxJunction) Keep Straight  
	---6 = In (distToNxJunction) Turn Sharply To The Left  
	---7 = In (distToNxJunction) Turn Sharply To The Right  
	---8 = Route is being recalculated or the navmesh is confusing. This happens randomly during the drive but consistently at {2044.0358, 2996.6116, 44.9717} if you face towards the bar and the route needs you to turn right. In that particular case, it could be a bug with how the turn appears to be 270 deg. CCW instead of "right." Either way, this seems to be the engine saying "I don't know the route right now."  
	---  
	---return value set to 0 always  
	GENERATE_DIRECTIONS_TO_COORD = function(x, y, z, p3, direction, p5, distToNxJunction) return invoker.call(0xF90125F1F79ECDF8, x, y, z, p3, direction, p5, distToNxJunction).int end,
	---  
	SET_IGNORE_NO_GPS_FLAG = function(toggle) invoker.call(0x72751156E7678833, toggle) end,
	---See: SET_BLIP_ROUTE  
	SET_IGNORE_NO_GPS_FLAG_UNTIL_FIRST_NORMAL_NODE = function(toggle) invoker.call(0x1FC289A0C3FF470F, toggle) end,
	---  
	SET_GPS_DISABLED_ZONE = function(x1, y1, z1, x2, y2, z3) invoker.call(0xDC20483CD3DD5201, x1, y1, z1, x2, y2, z3) end,
	---  
	GET_GPS_BLIP_ROUTE_LENGTH = function() return invoker.call(0xBBB45C3CF5C8AA85).int end,
	---p3 can be 0, 1 or 2.  
	GET_POS_ALONG_GPS_TYPE_ROUTE = function(result, p1, p2, p3) return invoker.call(0xF3162836C28F9DA5, result, p1, p2, p3).bool end,
	---  
	GET_GPS_BLIP_ROUTE_FOUND = function() return invoker.call(0x869DAACBBE9FA006).bool end,
	---  
	GET_ROAD_BOUNDARY_USING_HEADING = function(x, y, z, heading, outPosition) return invoker.call(0xA0F8A7517A273C05, x, y, z, heading, outPosition).bool end,
	---  
	GET_POSITION_BY_SIDE_OF_ROAD = function(x, y, z, p3, outPosition) return invoker.call(0x16F46FB18C8009E4, x, y, z, p3, outPosition).bool end,
	---Gets a value indicating whether the specified position is on a road.  
	---The vehicle parameter is not implemented (ignored).  
	IS_POINT_ON_ROAD = function(x, y, z, vehicle) return invoker.call(0x125BF4ABFC536B09, x, y, z, vehicle).bool end,
	---Gets the next zone that has been disabled using SET_GPS_DISABLED_ZONE_AT_INDEX.  
	GET_NEXT_GPS_DISABLED_ZONE_INDEX = function() return invoker.call(0xD3A6A0EF48823A8C).int end,
	---Disables the GPS route displayed on the minimap while within a certain zone (area). When in a disabled zone and creating a waypoint, the GPS route is not shown on the minimap until you are outside of the zone. When disabled, the direct distance is shown on minimap opposed to distance to travel. Seems to only work before setting a waypoint.  
	---You can clear the disabled zone with CLEAR_GPS_DISABLED_ZONE_AT_INDEX.  
	---  
	---**Setting a waypoint at the same coordinate:**  
	---Disabled Zone: https://i.imgur.com/P9VUuxM.png  
	---Enabled Zone (normal): https://i.imgur.com/BPi24aw.png  
	SET_GPS_DISABLED_ZONE_AT_INDEX = function(x1, y1, z1, x2, y2, z2, index) invoker.call(0xD0BC1C6FB18EE154, x1, y1, z1, x2, y2, z2, index) end,
	---Clears a disabled GPS route area from a certain index previously set using `SET_GPS_DISABLED_ZONE_AT_INDEX`.  
	CLEAR_GPS_DISABLED_ZONE_AT_INDEX = function(index) invoker.call(0x2801D0012266DF07, index) end,
	---  
	ADD_NAVMESH_REQUIRED_REGION = function(x, y, radius) invoker.call(0x387EAD7EE42F6685, x, y, radius) end,
	---  
	REMOVE_NAVMESH_REQUIRED_REGIONS = function() invoker.call(0x916F0A3CDEC3445E) end,
	---  
	IS_NAVMESH_REQUIRED_REGION_IN_USE = function() return invoker.call(0x705A844002B39DC0).bool end,
	---Set toggle true to disable navmesh.  
	---Set toggle false to enable navmesh.  
	DISABLE_NAVMESH_IN_AREA = function(x1, y1, z1, x2, y2, z2, toggle) invoker.call(0x4C8872D8CDBE1B8B, x1, y1, z1, x2, y2, z2, toggle) end,
	---  
	ARE_ALL_NAVMESH_REGIONS_LOADED = function() return invoker.call(0x8415D95B194A3AEA).bool end,
	---Returns whether navmesh for the region is loaded. The region is a rectangular prism defined by it's top left deepest corner to it's bottom right shallowest corner.  
	---  
	---If you can re-word this so it makes more sense, please do. I'm horrible with words sometimes...  
	IS_NAVMESH_LOADED_IN_AREA = function(x1, y1, z1, x2, y2, z2) return invoker.call(0xF813C7E63F9062A5, x1, y1, z1, x2, y2, z2).bool end,
	---  
	GET_NUM_NAVMESHES_EXISTING_IN_AREA = function(x1, y1, z1, x2, y2, z2) return invoker.call(0x01708E8DD3FF8C65, x1, y1, z1, x2, y2, z2).int end,
	---  
	ADD_NAVMESH_BLOCKING_OBJECT = function(p0, p1, p2, p3, p4, p5, p6, p7, p8) return invoker.call(0xFCD5C8E06E502F5A, p0, p1, p2, p3, p4, p5, p6, p7, p8).int end,
	---  
	UPDATE_NAVMESH_BLOCKING_OBJECT = function(p0, p1, p2, p3, p4, p5, p6, p7, p8) invoker.call(0x109E99373F290687, p0, p1, p2, p3, p4, p5, p6, p7, p8) end,
	---  
	REMOVE_NAVMESH_BLOCKING_OBJECT = function(p0) invoker.call(0x46399A7895957C0E, p0) end,
	---  
	DOES_NAVMESH_BLOCKING_OBJECT_EXIST = function(p0) return invoker.call(0x0EAEB0DB4B132399, p0).bool end,
	---Returns CGameWorldHeightMap's maximum Z value at specified point (grid node).  
	GET_APPROX_HEIGHT_FOR_POINT = function(x, y) return invoker.call(0x29C24BFBED8AB8FB, x, y).float end,
	---Returns CGameWorldHeightMap's maximum Z among all grid nodes that intersect with the specified rectangle.  
	GET_APPROX_HEIGHT_FOR_AREA = function(x1, y1, x2, y2) return invoker.call(0x8ABE8608576D9CE3, x1, y1, x2, y2).float end,
	---Returns CGameWorldHeightMap's minimum Z value at specified point (grid node).  
	GET_APPROX_FLOOR_FOR_POINT = function(x, y) return invoker.call(0x336511A34F2E5185, x, y).float end,
	---Returns CGameWorldHeightMap's minimum Z among all grid nodes that intersect with the specified rectangle.  
	GET_APPROX_FLOOR_FOR_AREA = function(x1, y1, x2, y2) return invoker.call(0x3599D741C9AC6310, x1, y1, x2, y2).float end,
	---Calculates the travel distance between a set of points.  
	---  
	---Doesn't seem to correlate with distance on gps sometimes.  
	---This function returns the value 100000.0 over long distances, seems to be a failure mode result, potentially occurring when not all path nodes are loaded into pathfind.  
	CALCULATE_TRAVEL_DISTANCE_BETWEEN_POINTS = function(x1, y1, z1, x2, y2, z2) return invoker.call(0xADD95C7005C4A197, x1, y1, z1, x2, y2, z2).float end,
}
PED={
	---https://alloc8or.re/gta5/doc/enums/ePedType.txt  
	---  
	---Full list of peds by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/peds.json  
	CREATE_PED = function(pedType, modelHash, x, y, z, heading, isNetwork, bScriptHostPed) return invoker.call(0xD49F9B0955C367DE, pedType, modelHash, x, y, z, heading, isNetwork, bScriptHostPed).int end,
	---Deletes the specified ped, then sets the handle pointed to by the pointer to NULL.  
	DELETE_PED = function(ped) invoker.call(0x9614299DCB53E54B, ped) end,
	---  
	CLONE_PED = function(ped, isNetwork, bScriptHostPed, copyHeadBlendFlag) return invoker.call(0xEF29A16337FACADB, ped, isNetwork, bScriptHostPed, copyHeadBlendFlag).int end,
	---  
	CLONE_PED_ALT = function(ped, isNetwork, bScriptHostPed, copyHeadBlendFlag, p4) return invoker.call(0x668FD40BCBA5DE48, ped, isNetwork, bScriptHostPed, copyHeadBlendFlag, p4).int end,
	---Copies ped's components and props to targetPed.  
	CLONE_PED_TO_TARGET = function(ped, targetPed) invoker.call(0xE952D6431689AD9A, ped, targetPed) end,
	---  
	CLONE_PED_TO_TARGET_ALT = function(ped, targetPed, p2) invoker.call(0x148B08C2D2ACB884, ped, targetPed, p2) end,
	---Gets a value indicating whether the specified ped is in the specified vehicle.  
	---  
	---If 'atGetIn' is false, the function will not return true until the ped is sitting in the vehicle and is about to close the door. If it's true, the function returns true the moment the ped starts to get onto the seat (after opening the door). Eg. if false, and the ped is getting into a submersible, the function will not return true until the ped has descended down into the submersible and gotten into the seat, while if it's true, it'll return true the moment the hatch has been opened and the ped is about to descend into the submersible.  
	IS_PED_IN_VEHICLE = function(ped, vehicle, atGetIn) return invoker.call(0xA3EE4A07279BB9DB, ped, vehicle, atGetIn).bool end,
	---  
	IS_PED_IN_MODEL = function(ped, modelHash) return invoker.call(0x796D90EFB19AA332, ped, modelHash).bool end,
	---Gets a value indicating whether the specified ped is in any vehicle.  
	---  
	---If 'atGetIn' is false, the function will not return true until the ped is sitting in the vehicle and is about to close the door. If it's true, the function returns true the moment the ped starts to get onto the seat (after opening the door). Eg. if false, and the ped is getting into a submersible, the function will not return true until the ped has descended down into the submersible and gotten into the seat, while if it's true, it'll return true the moment the hatch has been opened and the ped is about to descend into the submersible.  
	IS_PED_IN_ANY_VEHICLE = function(ped, atGetIn) return invoker.call(0x997ABD671D25CA0B, ped, atGetIn).bool end,
	---xyz - relative to the world origin.  
	IS_COP_PED_IN_AREA_3D = function(x1, y1, z1, x2, y2, z2) return invoker.call(0x16EC4839969F9F5E, x1, y1, z1, x2, y2, z2).bool end,
	---Gets a value indicating whether this ped's health is below its injured threshold.  
	---  
	---The default threshold is 100.  
	IS_PED_INJURED = function(ped) return invoker.call(0x84A2DD9AC37C35C1, ped).bool end,
	---Returns whether the specified ped is hurt.  
	IS_PED_HURT = function(ped) return invoker.call(0x5983BB449D7FDB12, ped).bool end,
	---Gets a value indicating whether this ped's health is below its fatally injured threshold. The default threshold is 100.  
	---If the handle is invalid, the function returns true.  
	IS_PED_FATALLY_INJURED = function(ped) return invoker.call(0xD839450756ED5A80, ped).bool end,
	---Seems to consistently return true if the ped is dead.  
	---  
	---p1 is always passed 1 in the scripts.  
	---  
	---I suggest to remove "OR_DYING" part, because it does not detect dying phase.  
	---  
	---That's what the devs call it, cry about it.  
	---  
	---lol  
	IS_PED_DEAD_OR_DYING = function(ped, p1) return invoker.call(0x3317DEDB88C95038, ped, p1).bool end,
	---  
	IS_CONVERSATION_PED_DEAD = function(ped) return invoker.call(0xE0A0AEC214B1FABA, ped).bool end,
	---  
	IS_PED_AIMING_FROM_COVER = function(ped) return invoker.call(0x3998B1276A3300E5, ped).bool end,
	---Returns whether the specified ped is reloading.  
	IS_PED_RELOADING = function(ped) return invoker.call(0x24B100C68C645951, ped).bool end,
	---Returns true if the given ped has a valid pointer to CPlayerInfo in its CPed class. That's all.  
	IS_PED_A_PLAYER = function(ped) return invoker.call(0x12534C348C6CB68B, ped).bool end,
	---pedType: see CREATE_PED  
	---  
	---Full list of peds by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/peds.json  
	CREATE_PED_INSIDE_VEHICLE = function(vehicle, pedType, modelHash, seat, isNetwork, bScriptHostPed) return invoker.call(0x7DD959874C1FD534, vehicle, pedType, modelHash, seat, isNetwork, bScriptHostPed).int end,
	---  
	SET_PED_DESIRED_HEADING = function(ped, heading) invoker.call(0xAA5A7ECE2AA8FE70, ped, heading) end,
	---  
	FORCE_ALL_HEADING_VALUES_TO_ALIGN = function(ped) invoker.call(0xFF287323B0E2C69A, ped) end,
	---angle is ped's view cone  
	IS_PED_FACING_PED = function(ped, otherPed, angle) return invoker.call(0xD71649DB0A545AA3, ped, otherPed, angle).bool end,
	---Notes: The function only returns true while the ped is:   
	---A.) Swinging a random melee attack (including pistol-whipping)  
	---  
	---B.) Reacting to being hit by a melee attack (including pistol-whipping)  
	---  
	---C.) Is locked-on to an enemy (arms up, strafing/skipping in the default fighting-stance, ready to dodge+counter).   
	---  
	---You don't have to be holding the melee-targetting button to be in this stance; you stay in it by default for a few seconds after swinging at someone. If you do a sprinting punch, it returns true for the duration of the punch animation and then returns false again, even if you've punched and made-angry many peds  
	IS_PED_IN_MELEE_COMBAT = function(ped) return invoker.call(0x4E209B2C1EAD5159, ped).bool end,
	---Returns true if the ped doesn't do any movement. If the ped is being pushed forwards by using APPLY_FORCE_TO_ENTITY for example, the function returns false.  
	IS_PED_STOPPED = function(ped) return invoker.call(0x530944F6F4B8A214, ped).bool end,
	---  
	IS_PED_SHOOTING_IN_AREA = function(ped, x1, y1, z1, x2, y2, z2, p7, p8) return invoker.call(0x7E9DFE24AC1E58EF, ped, x1, y1, z1, x2, y2, z2, p7, p8).bool end,
	---  
	IS_ANY_PED_SHOOTING_IN_AREA = function(x1, y1, z1, x2, y2, z2, p6, p7) return invoker.call(0xA0D3D71EA1086C55, x1, y1, z1, x2, y2, z2, p6, p7).bool end,
	---Returns whether the specified ped is shooting.  
	IS_PED_SHOOTING = function(ped) return invoker.call(0x34616828CD07F1A1, ped).bool end,
	---accuracy = 0-100, 100 being perfectly accurate  
	SET_PED_ACCURACY = function(ped, accuracy) invoker.call(0x7AEFB85C1D49DEB6, ped, accuracy) end,
	---  
	GET_PED_ACCURACY = function(ped) return invoker.call(0x37F4AD56ECBC0CD6, ped).int end,
	---  
	SET_AMBIENT_LAW_PED_ACCURACY_MODIFIER = function(multiplier) invoker.call(0x87DDEB611B329A9C, multiplier) end,
	---  
	IS_PED_MODEL = function(ped, modelHash) return invoker.call(0xC9D55B1A358A5BF7, ped, modelHash).bool end,
	---Forces the ped to fall back and kills it.  
	---  
	---It doesn't really explode the ped's head but it kills the ped  
	EXPLODE_PED_HEAD = function(ped, weaponHash) invoker.call(0x2D05CED3A38D0F3A, ped, weaponHash) end,
	---Judging purely from a quick disassembly, if the ped is in a vehicle, the ped will be deleted immediately. If not, it'll be marked as no longer needed. - very elegant..  
	REMOVE_PED_ELEGANTLY = function(ped) invoker.call(0xAC6D445B994DF95E, ped) end,
	---Same as SET_PED_ARMOUR, but ADDS 'amount' to the armor the Ped already has.  
	ADD_ARMOUR_TO_PED = function(ped, amount) invoker.call(0x5BA652A0CD14DF2F, ped, amount) end,
	---Sets the armor of the specified ped.  
	---  
	---ped: The Ped to set the armor of.  
	---amount: A value between 0 and 100 indicating the value to set the Ped's armor to.  
	SET_PED_ARMOUR = function(ped, amount) invoker.call(0xCEA04D83135264CC, ped, amount) end,
	---Ped: The ped to warp.  
	---vehicle: The vehicle to warp the ped into.  
	---Seat_Index: [-1 is driver seat, -2 first free passenger seat]  
	---  
	---Moreinfo of Seat Index  
	---DriverSeat = -1  
	---Passenger = 0  
	---Left Rear = 1  
	---RightRear = 2  
	SET_PED_INTO_VEHICLE = function(ped, vehicle, seatIndex) invoker.call(0xF75B0D629E1C063D, ped, vehicle, seatIndex) end,
	---  
	SET_PED_ALLOW_VEHICLES_OVERRIDE = function(ped, toggle) invoker.call(0x3C028C636A414ED9, ped, toggle) end,
	---  
	CAN_CREATE_RANDOM_PED = function(p0) return invoker.call(0x3E8349C08E4B82E4, p0).bool end,
	---vb.net  
	---Dim ped_handle As Integer  
	---                    With Game.Player.Character  
	---                        Dim pos As Vector3 = .Position + .ForwardVector * 3  
	---                        ped_handle = Native.Function.Call(Of Integer)(Hash.CREATE_RANDOM_PED, pos.X, pos.Y, pos.Z)  
	---                    End With  
	---  
	---Creates a Ped at the specified location, returns the Ped Handle.    
	---Ped will not act until SET_PED_AS_NO_LONGER_NEEDED is called.  
	CREATE_RANDOM_PED = function(posX, posY, posZ) return invoker.call(0xB4AC7D0CF06BFE8F, posX, posY, posZ).int end,
	---  
	CREATE_RANDOM_PED_AS_DRIVER = function(vehicle, returnHandle) return invoker.call(0x9B62392B474F44A0, vehicle, returnHandle).int end,
	---  
	CAN_CREATE_RANDOM_DRIVER = function() return invoker.call(0xB8EB95E5B4E56978).bool end,
	---  
	CAN_CREATE_RANDOM_BIKE_RIDER = function() return invoker.call(0xEACEEDA81751915C).bool end,
	---  
	SET_PED_MOVE_ANIMS_BLEND_OUT = function(ped) invoker.call(0x9E8C908F41584ECD, ped) end,
	---  
	SET_PED_CAN_BE_DRAGGED_OUT = function(ped, toggle) invoker.call(0xC1670E958EEE24E5, ped, toggle) end,
	---ntoggle was always false except in one instance (b678).  
	---  
	---The one time this is set to true seems to do with when you fail the mission.  
	SET_PED_ALLOW_HURT_COMBAT_FOR_ALL_MISSION_PEDS = function(toggle) invoker.call(0xF2BEBCDFAFDAA19E, toggle) end,
	---Returns true/false if the ped is/isn't male.  
	IS_PED_MALE = function(ped) return invoker.call(0x6D9F5FAA7488BA46, ped).bool end,
	---Returns true/false if the ped is/isn't humanoid.  
	IS_PED_HUMAN = function(ped) return invoker.call(0xB980061DA992779D, ped).bool end,
	---Gets the vehicle the specified Ped is in. Returns 0 if the ped is/was not in a vehicle.  
	GET_VEHICLE_PED_IS_IN = function(ped, includeEntering) return invoker.call(0x9A9112A0FE9A4713, ped, includeEntering).int end,
	---Resets the value for the last vehicle driven by the Ped.  
	RESET_PED_LAST_VEHICLE = function(ped) invoker.call(0xBB8DE8CF6A8DD8BB, ped) end,
	---  
	SET_PED_DENSITY_MULTIPLIER_THIS_FRAME = function(multiplier) invoker.call(0x95E3D6257B166CF2, multiplier) end,
	---  
	SET_SCENARIO_PED_DENSITY_MULTIPLIER_THIS_FRAME = function(p0, p1) invoker.call(0x7A556143A1C03898, p0, p1) end,
	---  
	SUPPRESS_AMBIENT_PED_AGGRESSIVE_CLEANUP_THIS_FRAME = function() invoker.call(0x5A7F62FDA59759BD) end,
	---  
	SET_SCRIPTED_CONVERSION_COORD_THIS_FRAME = function(x, y, z) invoker.call(0x5086C7843552CF85, x, y, z) end,
	---The distance between these points, is the diagonal of a box (remember it's 3D).  
	SET_PED_NON_CREATION_AREA = function(x1, y1, z1, x2, y2, z2) invoker.call(0xEE01041D559983EA, x1, y1, z1, x2, y2, z2) end,
	---  
	CLEAR_PED_NON_CREATION_AREA = function() invoker.call(0x2E05208086BA0651) end,
	---  
	INSTANTLY_FILL_PED_POPULATION = function() invoker.call(0x4759CC730F947C81) end,
	---Same function call as PED::GET_MOUNT, aka just returns 0  
	IS_PED_ON_MOUNT = function(ped) return invoker.call(0x460BC76A0E10655E, ped).bool end,
	---  
	---Function just returns 0  
	---void __fastcall ped__get_mount(NativeContext *a1)  
	---{  
	---  NativeContext *v1; // rbx@1  
	---  
	---  v1 = a1;  
	---  GetAddressOfPedFromScriptHandle(a1->Args->Arg1);  
	---  v1->Returns->Item1= 0;  
	---}  
	GET_MOUNT = function(ped) return invoker.call(0xE7E11B8DCBED1058, ped).int end,
	---Gets a value indicating whether the specified ped is on top of any vehicle.  
	---  
	---Return 1 when ped is on vehicle.  
	---Return 0 when ped is not on a vehicle.  
	---  
	IS_PED_ON_VEHICLE = function(ped) return invoker.call(0x67722AEB798E5FAB, ped).bool end,
	---  
	IS_PED_ON_SPECIFIC_VEHICLE = function(ped, vehicle) return invoker.call(0xEC5F66E459AF3BB2, ped, vehicle).bool end,
	---Maximum possible amount of money on MP is 2000. ~JX  
	---  
	--------------------------------------------------------------------------------  
	---  
	---Maximum amount that a ped can theoretically have is 65535 (0xFFFF) since the amount is stored as an unsigned short (uint16_t) value.  
	SET_PED_MONEY = function(ped, amount) invoker.call(0xA9C8960E8684C1B5, ped, amount) end,
	---  
	GET_PED_MONEY = function(ped) return invoker.call(0x3F69145BBA87BAE7, ped).int end,
	---Related to Peds dropping pickup_health_snack; p0 is a value between [0.0, 1.0] that corresponds to drop rate  
	SET_HEALTH_SNACKS_CARRIED_BY_ALL_NEW_PEDS = function(p0, p1) invoker.call(0xFF4803BC019852D9, p0, p1) end,
	---  
	SET_AMBIENT_PEDS_DROP_MONEY = function(p0) invoker.call(0x6B0E6172C9A4D902, p0) end,
	---  
	_SET_BLOCK_AMBIENT_PEDS_FROM_DROPPING_WEAPONS_THIS_FRAME = function() invoker.call(0xC73EFFC5E043A8BA) end,
	---  
	SET_BLOCKING_OF_NON_TEMPORARY_EVENTS_FOR_AMBIENT_PEDS_THIS_FRAME = function(p0) invoker.call(0x9911F4A24485F653, p0) end,
	---Ped no longer takes critical damage modifiers if set to FALSE.  
	---Example: Headshotting a player no longer one shots them. Instead they will take the same damage as a torso shot.  
	SET_PED_SUFFERS_CRITICAL_HITS = function(ped, toggle) invoker.call(0xEBD76F2359F190AC, ped, toggle) end,
	---  
	SET_PED_UPPER_BODY_DAMAGE_ONLY = function(ped, toggle) invoker.call(0xAFC976FD0580C7B3, ped, toggle) end,
	---Detect if ped is sitting in the specified vehicle  
	---[True/False]  
	IS_PED_SITTING_IN_VEHICLE = function(ped, vehicle) return invoker.call(0xA808AA1D79230FC2, ped, vehicle).bool end,
	---Detect if ped is in any vehicle  
	---[True/False]  
	IS_PED_SITTING_IN_ANY_VEHICLE = function(ped) return invoker.call(0x826AA586EDB9FEF8, ped).bool end,
	---  
	IS_PED_ON_FOOT = function(ped) return invoker.call(0x01FEE67DB37F59B2, ped).bool end,
	---  
	IS_PED_ON_ANY_BIKE = function(ped) return invoker.call(0x94495889E22C6479, ped).bool end,
	---  
	IS_PED_PLANTING_BOMB = function(ped) return invoker.call(0xC70B5FAE151982D8, ped).bool end,
	---  
	GET_DEAD_PED_PICKUP_COORDS = function(ped, p1, p2) return invoker.call(0xCD5003B097200F36, ped, p1, p2).scr_vec3 end,
	---  
	IS_PED_IN_ANY_BOAT = function(ped) return invoker.call(0x2E0E1C2B4F6CB339, ped).bool end,
	---  
	IS_PED_IN_ANY_SUB = function(ped) return invoker.call(0xFBFC01CCFB35D99E, ped).bool end,
	---  
	IS_PED_IN_ANY_HELI = function(ped) return invoker.call(0x298B91AE825E5705, ped).bool end,
	---  
	IS_PED_IN_ANY_PLANE = function(ped) return invoker.call(0x5FFF4CFC74D8FB80, ped).bool end,
	---  
	IS_PED_IN_FLYING_VEHICLE = function(ped) return invoker.call(0x9134873537FA419C, ped).bool end,
	---  
	SET_PED_DIES_IN_WATER = function(ped, toggle) invoker.call(0x56CEF0AC79073BDE, ped, toggle) end,
	---  
	GET_PED_DIES_IN_WATER = function(ped) return invoker.call(0x65671A4FB8218930, ped).bool end,
	---  
	SET_PED_DIES_IN_SINKING_VEHICLE = function(ped, toggle) invoker.call(0xD718A22995E2B4BC, ped, toggle) end,
	---  
	GET_PED_ARMOUR = function(ped) return invoker.call(0x9483AF821605B1D8, ped).int end,
	---  
	SET_PED_STAY_IN_VEHICLE_WHEN_JACKED = function(ped, toggle) invoker.call(0xEDF4079F9D54C9A1, ped, toggle) end,
	---  
	SET_PED_CAN_BE_SHOT_IN_VEHICLE = function(ped, toggle) invoker.call(0xC7EF1BA83230BA07, ped, toggle) end,
	---  
	GET_PED_LAST_DAMAGE_BONE = function(ped, outBone) return invoker.call(0xD75960F6BD9EA49C, ped, outBone).bool end,
	---  
	CLEAR_PED_LAST_DAMAGE_BONE = function(ped) invoker.call(0x8EF6B7AC68E2F01B, ped) end,
	---  
	SET_AI_WEAPON_DAMAGE_MODIFIER = function(value) invoker.call(0x1B1E2A40A65B8521, value) end,
	---  
	RESET_AI_WEAPON_DAMAGE_MODIFIER = function() invoker.call(0xEA16670E7BA4743C) end,
	---  
	SET_AI_MELEE_WEAPON_DAMAGE_MODIFIER = function(modifier) invoker.call(0x66460DEDDD417254, modifier) end,
	---  
	RESET_AI_MELEE_WEAPON_DAMAGE_MODIFIER = function() invoker.call(0x46E56A7CD1D63C3F) end,
	---  
	SET_TREAT_AS_AMBIENT_PED_FOR_DRIVER_LOCKON = function(ped, p1) invoker.call(0x2F3C3D9F50681DE4, ped, p1) end,
	---  
	SET_PED_CAN_BE_TARGETTED = function(ped, toggle) invoker.call(0x63F58F7C80513AAD, ped, toggle) end,
	---  
	SET_PED_CAN_BE_TARGETTED_BY_TEAM = function(ped, team, toggle) invoker.call(0xBF1CA77833E58F2C, ped, team, toggle) end,
	---  
	SET_PED_CAN_BE_TARGETTED_BY_PLAYER = function(ped, player, toggle) invoker.call(0x66B57B72E0836A76, ped, player, toggle) end,
	---  
	SET_ALLOW_LOCKON_TO_PED_IF_FRIENDLY = function(ped, toggle) invoker.call(0x061CB768363D6424, ped, toggle) end,
	---  
	SET_USE_CAMERA_HEADING_FOR_DESIRED_DIRECTION_LOCK_ON_TEST = function(ped, toggle) invoker.call(0xFD325494792302D7, ped, toggle) end,
	---  
	IS_PED_IN_ANY_POLICE_VEHICLE = function(ped) return invoker.call(0x0BD04E29640C9C12, ped).bool end,
	---  
	FORCE_PED_TO_OPEN_PARACHUTE = function(ped) invoker.call(0x16E42E800B472221, ped) end,
	---  
	IS_PED_IN_PARACHUTE_FREE_FALL = function(ped) return invoker.call(0x7DCE8BDA0F1C1200, ped).bool end,
	---  
	IS_PED_FALLING = function(ped) return invoker.call(0xFB92A102F1C4DFA3, ped).bool end,
	---  
	IS_PED_JUMPING = function(ped) return invoker.call(0xCEDABC5900A0BF97, ped).bool end,
	---  
	IS_PED_LANDING = function(p0) return invoker.call(0x412F1364FA066CFB, p0).bool end,
	---  
	IS_PED_DOING_A_BEAST_JUMP = function(p0) return invoker.call(0x451D05012CCEC234, p0).bool end,
	---  
	IS_PED_CLIMBING = function(ped) return invoker.call(0x53E8CB4F48BFE623, ped).bool end,
	---  
	IS_PED_VAULTING = function(ped) return invoker.call(0x117C70D1F5730B5E, ped).bool end,
	---  
	IS_PED_DIVING = function(ped) return invoker.call(0x5527B8246FEF9B11, ped).bool end,
	---  
	IS_PED_JUMPING_OUT_OF_VEHICLE = function(ped) return invoker.call(0x433DDFFE2044B636, ped).bool end,
	---Returns true if the ped is currently opening a door (CTaskOpenDoor).  
	IS_PED_OPENING_DOOR = function(ped) return invoker.call(0x26AF0E8E30BD2A2C, ped).bool end,
	---Returns:  
	---  
	----1: Normal  
	---0: Wearing parachute on back  
	---1: Parachute opening  
	---2: Parachute open  
	---3: Falling to doom (e.g. after exiting parachute)  
	---  
	---Normal means no parachute?  
	GET_PED_PARACHUTE_STATE = function(ped) return invoker.call(0x79CFD9827CC979B6, ped).int end,
	----1: no landing  
	---0: landing on both feet  
	---1: stumbling  
	---2: rolling  
	---3: ragdoll  
	GET_PED_PARACHUTE_LANDING_TYPE = function(ped) return invoker.call(0x8B9F1FC6AE8166C0, ped).int end,
	---  
	SET_PED_PARACHUTE_TINT_INDEX = function(ped, tintIndex) invoker.call(0x333FC8DB079B7186, ped, tintIndex) end,
	---  
	GET_PED_PARACHUTE_TINT_INDEX = function(ped, outTintIndex) invoker.call(0xEAF5F7E5AE7C6C9D, ped, outTintIndex) end,
	---  
	SET_PED_RESERVE_PARACHUTE_TINT_INDEX = function(ped, p1) invoker.call(0xE88DA0751C22A2AD, ped, p1) end,
	---  
	CREATE_PARACHUTE_BAG_OBJECT = function(ped, p1, p2) return invoker.call(0x8C4F3BF23B6237DB, ped, p1, p2).int end,
	---This is the SET_CHAR_DUCKING from GTA IV, that makes Peds duck. This function does nothing in GTA V. It cannot set the ped as ducking in vehicles, and IS_PED_DUCKING will always return false.  
	SET_PED_DUCKING = function(ped, toggle) invoker.call(0x030983CA930B692D, ped, toggle) end,
	---  
	IS_PED_DUCKING = function(ped) return invoker.call(0xD125AE748725C6BC, ped).bool end,
	---  
	IS_PED_IN_ANY_TAXI = function(ped) return invoker.call(0x6E575D6A898AB852, ped).bool end,
	---  
	SET_PED_ID_RANGE = function(ped, value) invoker.call(0xF107E836A70DCE05, ped, value) end,
	---  
	SET_PED_HIGHLY_PERCEPTIVE = function(ped, toggle) invoker.call(0x52D59AB61DDC05DD, ped, toggle) end,
	---  
	SET_COP_PERCEPTION_OVERRIDES = function(seeingRange, seeingRangePeripheral, hearingRange, visualFieldMinAzimuthAngle, visualFieldMaxAzimuthAngle, fieldOfGazeMaxAngle, p6) invoker.call(0x2F074C904D85129E, seeingRange, seeingRangePeripheral, hearingRange, visualFieldMinAzimuthAngle, visualFieldMaxAzimuthAngle, fieldOfGazeMaxAngle, p6) end,
	---  
	SET_PED_INJURED_ON_GROUND_BEHAVIOUR = function(ped, p1) invoker.call(0xEC4B4B3B9908052A, ped, p1) end,
	---  
	DISABLE_PED_INJURED_ON_GROUND_BEHAVIOUR = function(ped) invoker.call(0x733C87D4CE22BEA2, ped) end,
	---  
	SET_PED_SEEING_RANGE = function(ped, value) invoker.call(0xF29CF591C4BF6CEE, ped, value) end,
	---  
	SET_PED_HEARING_RANGE = function(ped, value) invoker.call(0x33A8F7F7D5F7F33C, ped, value) end,
	---  
	SET_PED_VISUAL_FIELD_MIN_ANGLE = function(ped, value) invoker.call(0x2DB492222FB21E26, ped, value) end,
	---  
	SET_PED_VISUAL_FIELD_MAX_ANGLE = function(ped, value) invoker.call(0x70793BDCA1E854D4, ped, value) end,
	---This native refers to the field of vision the ped has below them, starting at 0 degrees. The angle value should be negative.  
	----90f should let the ped see 90 degrees below them, for example.  
	SET_PED_VISUAL_FIELD_MIN_ELEVATION_ANGLE = function(ped, angle) invoker.call(0x7A276EB2C224D70F, ped, angle) end,
	---This native refers to the field of vision the ped has above them, starting at 0 degrees. 90f would let the ped see enemies directly above of them.  
	SET_PED_VISUAL_FIELD_MAX_ELEVATION_ANGLE = function(ped, angle) invoker.call(0x78D0B67629D75856, ped, angle) end,
	---  
	SET_PED_VISUAL_FIELD_PERIPHERAL_RANGE = function(ped, range) invoker.call(0x9C74B0BC831B753A, ped, range) end,
	---  
	SET_PED_VISUAL_FIELD_CENTER_ANGLE = function(ped, angle) invoker.call(0x3B6405E8AB34A907, ped, angle) end,
	---  
	GET_PED_VISUAL_FIELD_CENTER_ANGLE = function(ped) return invoker.call(0xEF2C71A32CAD5FBD, ped).float end,
	---p1 is usually 0 in the scripts. action is either 0 or a pointer to "DEFAULT_ACTION".  
	SET_PED_STEALTH_MOVEMENT = function(ped, p1, action) invoker.call(0x88CBB5CEB96B7BD2, ped, p1, action) end,
	---Returns whether the entity is in stealth mode  
	GET_PED_STEALTH_MOVEMENT = function(ped) return invoker.call(0x7C2AC9CA66575FBF, ped).bool end,
	---Creates a new ped group.  
	---Groups can contain up to 8 peds.  
	---  
	---The parameter is unused.  
	---  
	---Returns a handle to the created group, or 0 if a group couldn't be created.  
	CREATE_GROUP = function(unused) return invoker.call(0x90370EBE0FEE1A3D, unused).int end,
	---  
	SET_PED_AS_GROUP_LEADER = function(ped, groupId) invoker.call(0x2A7819605465FBCE, ped, groupId) end,
	---  
	SET_PED_AS_GROUP_MEMBER = function(ped, groupId) invoker.call(0x9F3480FE65DB31B5, ped, groupId) end,
	---This only will teleport the ped to the group leader if the group leader teleports (sets coords).  
	---  
	---Only works in singleplayer  
	SET_PED_CAN_TELEPORT_TO_GROUP_LEADER = function(pedHandle, groupHandle, toggle) invoker.call(0x2E2F4240B3F24647, pedHandle, groupHandle, toggle) end,
	---  
	REMOVE_GROUP = function(groupId) invoker.call(0x8EB2F69076AF7053, groupId) end,
	---  
	REMOVE_PED_FROM_GROUP = function(ped) invoker.call(0xED74007FFB146BC2, ped) end,
	---  
	IS_PED_GROUP_MEMBER = function(ped, groupId) return invoker.call(0x9BB01E3834671191, ped, groupId).bool end,
	---  
	IS_PED_HANGING_ON_TO_VEHICLE = function(ped) return invoker.call(0x1C86D8AEF8254B78, ped).bool end,
	---Sets the range at which members will automatically leave the group.  
	SET_GROUP_SEPARATION_RANGE = function(groupHandle, separationRange) invoker.call(0x4102C7858CFEE4E4, groupHandle, separationRange) end,
	---Ped will stay on the ground after being stunned for at lest ms time. (in milliseconds)  
	SET_PED_MIN_GROUND_TIME_FOR_STUNGUN = function(ped, ms) invoker.call(0xFA0675AB151073FA, ped, ms) end,
	---  
	IS_PED_PRONE = function(ped) return invoker.call(0xD6A86331A537A7B9, ped).bool end,
	---Checks to see if ped and target are in combat with eachother. Only goes one-way: if target is engaged in combat with ped but ped has not yet reacted, the function will return false until ped starts fighting back.  
	---  
	---p1 is usually 0 in the scripts because it gets the ped id during the task sequence. For instance: PED::IS_PED_IN_COMBAT(l_42E[4/*14*/], PLAYER::PLAYER_PED_ID()) // armenian2.ct4: 43794  
	IS_PED_IN_COMBAT = function(ped, target) return invoker.call(0x4859F1FC66A6278E, ped, target).bool end,
	---  
	GET_PED_TARGET_FROM_COMBAT_PED = function(ped, p1) return invoker.call(0x32C27A11307B01CC, ped, p1).int end,
	---  
	CAN_PED_IN_COMBAT_SEE_TARGET = function(ped, target) return invoker.call(0xEAD42DE3610D0721, ped, target).bool end,
	---  
	IS_PED_DOING_DRIVEBY = function(ped) return invoker.call(0xB2C086CC1BF8F2BF, ped).bool end,
	---  
	IS_PED_JACKING = function(ped) return invoker.call(0x4AE4FF911DFB61DA, ped).bool end,
	---  
	IS_PED_BEING_JACKED = function(ped) return invoker.call(0x9A497FE2DF198913, ped).bool end,
	---p1 is always 0  
	IS_PED_BEING_STUNNED = function(ped, p1) return invoker.call(0x4FBACCE3B4138EE8, ped, p1).bool end,
	---  
	GET_PEDS_JACKER = function(ped) return invoker.call(0x9B128DC36C1E04CF, ped).int end,
	---  
	GET_JACK_TARGET = function(ped) return invoker.call(0x5486A79D9FBD342D, ped).int end,
	---  
	IS_PED_FLEEING = function(ped) return invoker.call(0xBBCCE00B381F8482, ped).bool end,
	---p1 is nearly always 0 in the scripts.   
	IS_PED_IN_COVER = function(ped, exceptUseWeapon) return invoker.call(0x60DFD0691A170B88, ped, exceptUseWeapon).bool end,
	---  
	IS_PED_IN_COVER_FACING_LEFT = function(ped) return invoker.call(0x845333B3150583AB, ped).bool end,
	---  
	IS_PED_IN_HIGH_COVER = function(ped) return invoker.call(0x6A03BF943D767C93, ped).bool end,
	---  
	IS_PED_GOING_INTO_COVER = function(ped) return invoker.call(0x9F65DBC537E59AD5, ped).bool end,
	---i could be time. Only example in the decompiled scripts uses it as -1.  
	SET_PED_PINNED_DOWN = function(ped, pinned, i) return invoker.call(0xAAD6D1ACF08F4612, ped, pinned, i).bool end,
	---  
	_HAS_PED_CLEAR_LOS_TO_ENTITY = function(ped, entity, x, y, z, p5, p6, p7) return invoker.call(0xA32ABFEB2A03B306, ped, entity, x, y, z, p5, p6, p7).bool end,
	---  
	GET_SEAT_PED_IS_TRYING_TO_ENTER = function(ped) return invoker.call(0x6F4C85ACD641BCD2, ped).int end,
	---  
	GET_VEHICLE_PED_IS_TRYING_TO_ENTER = function(ped) return invoker.call(0x814FA8BE5449445D, ped).int end,
	---Returns the Entity (Ped, Vehicle, or ?Object?) that killed the 'ped'  
	---  
	---Is best to check if the Ped is dead before asking for its killer.  
	GET_PED_SOURCE_OF_DEATH = function(ped) return invoker.call(0x93C8B64DEB84728C, ped).int end,
	---Returns the hash of the weapon/model/object that killed the ped.  
	GET_PED_CAUSE_OF_DEATH = function(ped) return invoker.call(0x16FFE42AB2D2DC59, ped).int end,
	---  
	GET_PED_TIME_OF_DEATH = function(ped) return invoker.call(0x1E98817B311AE98A, ped).int end,
	---  
	COUNT_PEDS_IN_COMBAT_WITH_TARGET = function(ped) return invoker.call(0x5407B7288D0478B7, ped).int end,
	---  
	COUNT_PEDS_IN_COMBAT_WITH_TARGET_WITHIN_RADIUS = function(ped, x, y, z, radius) return invoker.call(0x336B3D200AB007CB, ped, x, y, z, radius).int end,
	---  
	SET_PED_RELATIONSHIP_GROUP_DEFAULT_HASH = function(ped, hash) invoker.call(0xADB3F206518799E8, ped, hash) end,
	---  
	SET_PED_RELATIONSHIP_GROUP_HASH = function(ped, hash) invoker.call(0xC80A74AC829DDD92, ped, hash) end,
	---Sets the relationship between two groups. This should be called twice (once for each group).  
	---  
	---Relationship types:  
	---0 = Companion  
	---1 = Respect  
	---2 = Like  
	---3 = Neutral  
	---4 = Dislike  
	---5 = Hate  
	---255 = Pedestrians  
	---  
	---Example:  
	---PED::SET_RELATIONSHIP_BETWEEN_GROUPS(2, l_1017, 0xA49E591C);  
	---PED::SET_RELATIONSHIP_BETWEEN_GROUPS(2, 0xA49E591C, l_1017);  
	SET_RELATIONSHIP_BETWEEN_GROUPS = function(relationship, group1, group2) invoker.call(0xBF25EB89375A37AD, relationship, group1, group2) end,
	---Clears the relationship between two groups. This should be called twice (once for each group).  
	---  
	---Relationship types:  
	---0 = Companion  
	---1 = Respect  
	---2 = Like  
	---3 = Neutral  
	---4 = Dislike  
	---5 = Hate  
	---255 = Pedestrians  
	---(Credits: Inco)  
	---  
	---Example:  
	---PED::CLEAR_RELATIONSHIP_BETWEEN_GROUPS(2, l_1017, 0xA49E591C);  
	---PED::CLEAR_RELATIONSHIP_BETWEEN_GROUPS(2, 0xA49E591C, l_1017);  
	CLEAR_RELATIONSHIP_BETWEEN_GROUPS = function(relationship, group1, group2) invoker.call(0x5E29243FB56FC6D4, relationship, group1, group2) end,
	---Can't select void. This function returns nothing. The hash of the created relationship group is output in the second parameter.  
	ADD_RELATIONSHIP_GROUP = function(name, groupHash) return invoker.call(0xF372BC22FCB88606, name, groupHash).bool end,
	---  
	REMOVE_RELATIONSHIP_GROUP = function(groupHash) invoker.call(0xB6BA2444AB393DA2, groupHash) end,
	---  
	DOES_RELATIONSHIP_GROUP_EXIST = function(groupHash) return invoker.call(0xCC6E3B6BB69501F1, groupHash).bool end,
	---Gets the relationship between two peds. This should be called twice (once for each ped).  
	---  
	---Relationship types:  
	---0 = Companion  
	---1 = Respect  
	---2 = Like  
	---3 = Neutral  
	---4 = Dislike  
	---5 = Hate  
	---255 = Pedestrians  
	---(Credits: Inco)  
	---  
	---Example:  
	---PED::GET_RELATIONSHIP_BETWEEN_PEDS(2, l_1017, 0xA49E591C);  
	---PED::GET_RELATIONSHIP_BETWEEN_PEDS(2, 0xA49E591C, l_1017);  
	GET_RELATIONSHIP_BETWEEN_PEDS = function(ped1, ped2) return invoker.call(0xEBA5AD3A0EAF7121, ped1, ped2).int end,
	---  
	GET_PED_RELATIONSHIP_GROUP_DEFAULT_HASH = function(ped) return invoker.call(0x42FDD0F017B1E38E, ped).int end,
	---  
	GET_PED_RELATIONSHIP_GROUP_HASH = function(ped) return invoker.call(0x7DBDD04862D95F04, ped).int end,
	---Gets the relationship between two groups. This should be called twice (once for each group).  
	---  
	---Relationship types:  
	---0 = Companion  
	---1 = Respect  
	---2 = Like  
	---3 = Neutral  
	---4 = Dislike  
	---5 = Hate  
	---255 = Pedestrians  
	---  
	---Example:  
	---PED::GET_RELATIONSHIP_BETWEEN_GROUPS(l_1017, 0xA49E591C);  
	---PED::GET_RELATIONSHIP_BETWEEN_GROUPS(0xA49E591C, l_1017);  
	GET_RELATIONSHIP_BETWEEN_GROUPS = function(group1, group2) return invoker.call(0x9E6B70061662AE5C, group1, group2).int end,
	---  
	SET_RELATIONSHIP_GROUP_AFFECTS_WANTED_LEVEL = function(group, p1) invoker.call(0x5615E0C5EB2BC6E2, group, p1) end,
	---  
	TELL_GROUP_PEDS_IN_AREA_TO_ATTACK = function(ped, p1, p2, hash, p4, p5) invoker.call(0xAD27D957598E49E9, ped, p1, p2, hash, p4, p5) end,
	---  
	SET_PED_CAN_BE_TARGETED_WITHOUT_LOS = function(ped, toggle) invoker.call(0x4328652AE5769C71, ped, toggle) end,
	---  
	SET_PED_TO_INFORM_RESPECTED_FRIENDS = function(ped, radius, maxFriends) invoker.call(0x112942C6E708F70B, ped, radius, maxFriends) end,
	---  
	IS_PED_RESPONDING_TO_EVENT = function(ped, event) return invoker.call(0x625B774D75C87068, ped, event).bool end,
	---  
	GET_POS_FROM_FIRED_EVENT = function(ped, eventType, outData) return invoker.call(0xBA656A3BB01BDEA3, ped, eventType, outData).bool end,
	---FIRING_PATTERN_BURST_FIRE = 0xD6FF6D61 ( 1073727030 )  
	---FIRING_PATTERN_BURST_FIRE_IN_COVER = 0x026321F1 ( 40051185 )  
	---FIRING_PATTERN_BURST_FIRE_DRIVEBY = 0xD31265F2 ( -753768974 )  
	---FIRING_PATTERN_FROM_GROUND = 0x2264E5D6 ( 577037782 )  
	---FIRING_PATTERN_DELAY_FIRE_BY_ONE_SEC = 0x7A845691 ( 2055493265 )  
	---FIRING_PATTERN_FULL_AUTO = 0xC6EE6B4C ( -957453492 )  
	---FIRING_PATTERN_SINGLE_SHOT = 0x5D60E4E0 ( 1566631136 )  
	---FIRING_PATTERN_BURST_FIRE_PISTOL = 0xA018DB8A ( -1608983670 )  
	---FIRING_PATTERN_BURST_FIRE_SMG = 0xD10DADEE ( 1863348768 )  
	---FIRING_PATTERN_BURST_FIRE_RIFLE = 0x9C74B406 ( -1670073338 )  
	---FIRING_PATTERN_BURST_FIRE_MG = 0xB573C5B4 ( -1250703948 )  
	---FIRING_PATTERN_BURST_FIRE_PUMPSHOTGUN = 0x00BAC39B ( 12239771 )  
	---FIRING_PATTERN_BURST_FIRE_HELI = 0x914E786F ( -1857128337 )  
	---FIRING_PATTERN_BURST_FIRE_MICRO = 0x42EF03FD ( 1122960381 )  
	---FIRING_PATTERN_SHORT_BURSTS = 0x1A92D7DF ( 445831135 )  
	---FIRING_PATTERN_SLOW_FIRE_TANK = 0xE2CA3A71 ( -490063247 )  
	---  
	---Firing pattern info: https://pastebin.com/Px036isB  
	SET_PED_FIRING_PATTERN = function(ped, patternHash) invoker.call(0x9AC577F5A12AD8A9, ped, patternHash) end,
	---shootRate 0-1000  
	SET_PED_SHOOT_RATE = function(ped, shootRate) invoker.call(0x614DA022990752DC, ped, shootRate) end,
	---combatType can be between 0-14. See GET_COMBAT_FLOAT below for a list of possible parameters.  
	SET_COMBAT_FLOAT = function(ped, combatType, p2) invoker.call(0xFF41B4B141ED981C, ped, combatType, p2) end,
	---p0: Ped Handle  
	---p1: int i | 0 <= i <= 27  
	---  
	---p1 probably refers to the attributes configured in combatbehavior.meta. There are 13. Example:  
	---  
	---<BlindFireChance value="0.1"/>  
	---<WeaponShootRateModifier value="1.0"/>  
	---<TimeBetweenBurstsInCover value="1.25"/>  
	---<BurstDurationInCover value="2.0"/>  
	---<TimeBetweenPeeks value="10.0"/>  
	---<WeaponAccuracy value="0.18"/>  
	---<FightProficiency value="0.8"/>  
	---<StrafeWhenMovingChance value="1.0"/>  
	---<WalkWhenStrafingChance value="0.0"/>  
	---<AttackWindowDistanceForCover value="55.0"/>  
	---<TimeToInvalidateInjuredTarget value="9.0"/>  
	---<TriggerChargeTime_Near value="4.0"/>  
	---<TriggerChargeTime_Far value="10.0"/>  
	---  
	----------------Confirmed by editing combatbehavior.meta:  
	---p1:  
	---0=BlindFireChance  
	---1=BurstDurationInCover  
	---3=TimeBetweenBurstsInCover  
	---4=TimeBetweenPeeks  
	---5=StrafeWhenMovingChance  
	---8=WalkWhenStrafingChance  
	---11=AttackWindowDistanceForCover  
	---12=TimeToInvalidateInjuredTarget  
	---16=OptimalCoverDistance  
	---  
	GET_COMBAT_FLOAT = function(ped, p1) return invoker.call(0x52DFF8A10508090A, ped, p1).float end,
	---p1 may be a BOOL representing whether or not the group even exists  
	GET_GROUP_SIZE = function(groupID, p1, sizeInMembers) invoker.call(0x8DE69FE35CA09A45, groupID, p1, sizeInMembers) end,
	---  
	DOES_GROUP_EXIST = function(groupId) return invoker.call(0x7C6B0C22F9F40BBE, groupId).bool end,
	---Returns the group id of which the specified ped is a member of.  
	GET_PED_GROUP_INDEX = function(ped) return invoker.call(0xF162E133B4E7A675, ped).int end,
	---  
	IS_PED_IN_GROUP = function(ped) return invoker.call(0x5891CAC5D4ACFF74, ped).bool end,
	---  
	GET_PLAYER_PED_IS_FOLLOWING = function(ped) return invoker.call(0x6A3975DEA89F9A17, ped).int end,
	---0: Default  
	---1: Circle Around Leader  
	---2: Alternative Circle Around Leader  
	---3: Line, with Leader at center  
	SET_GROUP_FORMATION = function(groupId, formationType) invoker.call(0xCE2F5FC3AF7E8C1E, groupId, formationType) end,
	---  
	SET_GROUP_FORMATION_SPACING = function(groupId, x, y, z) invoker.call(0x1D9D45004C28C916, groupId, x, y, z) end,
	---  
	RESET_GROUP_FORMATION_DEFAULT_SPACING = function(groupHandle) invoker.call(0x63DAB4CCB3273205, groupHandle) end,
	---Gets ID of vehicle player using. It means it can get ID at any interaction with vehicle. Enter\exit for example. And that means it is faster than GET_VEHICLE_PED_IS_IN but less safe.  
	GET_VEHICLE_PED_IS_USING = function(ped) return invoker.call(0x6094AD011A2EA87D, ped).int end,
	---  
	GET_VEHICLE_PED_IS_ENTERING = function(ped) return invoker.call(0xF92691AED837A5FC, ped).int end,
	---enable or disable the gravity of a ped  
	---  
	---Examples:  
	---PED::SET_PED_GRAVITY(PLAYER::PLAYER_PED_ID(), 0x00000001);  
	---PED::SET_PED_GRAVITY(Local_289[iVar0 /*20*/], 0x00000001);  
	SET_PED_GRAVITY = function(ped, toggle) invoker.call(0x9FF447B6B6AD960A, ped, toggle) end,
	---  
	_SET_PED_SURVIVES_BEING_OUT_OF_WATER = function(ped, toggle) return invoker.call(0x100CD221F572F6E1, ped, toggle).bool end,
	---damages a ped with the given amount  
	APPLY_DAMAGE_TO_PED = function(ped, damageAmount, p2, p3, weaponType) invoker.call(0x697157CED63F18D4, ped, damageAmount, p2, p3, weaponType) end,
	---  
	GET_TIME_PED_DAMAGED_BY_WEAPON = function(ped, weaponHash) return invoker.call(0x36B77BB84687C318, ped, weaponHash).int end,
	---  
	SET_PED_ALLOWED_TO_DUCK = function(ped, toggle) invoker.call(0xDA1F1B7BE1A8766F, ped, toggle) end,
	---  
	SET_PED_NEVER_LEAVES_GROUP = function(ped, toggle) invoker.call(0x3DBFC55D5C9BB447, ped, toggle) end,
	---https://alloc8or.re/gta5/doc/enums/ePedType.txt  
	GET_PED_TYPE = function(ped) return invoker.call(0xFF059E1E4C01E63C, ped).int end,
	---Turns the desired ped into a cop. If you use this on the player ped, you will become almost invisible to cops dispatched for you. You will also report your own crimes, get a generic cop voice, get a cop-vision-cone on the radar, and you will be unable to shoot at other cops. SWAT and Army will still shoot at you. Toggling ped as "false" has no effect; you must change p0's ped model to disable the effect.  
	SET_PED_AS_COP = function(ped, toggle) invoker.call(0xBB03C38DD3FB7FFD, ped, toggle) end,
	---  
	SET_PED_HEALTH_PENDING_LAST_DAMAGE_EVENT_OVERRIDE_FLAG = function(toggle) invoker.call(0xB3352E018D6F89DF, toggle) end,
	---Sets the maximum health of a ped.  
	SET_PED_MAX_HEALTH = function(ped, value) invoker.call(0xF5F6378C4F3419D3, ped, value) end,
	---  
	GET_PED_MAX_HEALTH = function(ped) return invoker.call(0x4700A416E8324EF3, ped).int end,
	---  
	SET_PED_MAX_TIME_IN_WATER = function(ped, value) invoker.call(0x43C851690662113D, ped, value) end,
	---  
	SET_PED_MAX_TIME_UNDERWATER = function(ped, value) invoker.call(0x6BA428C528D9E522, ped, value) end,
	---  
	SET_CORPSE_RAGDOLL_FRICTION = function(ped, p1) invoker.call(0x2735233A786B1BEF, ped, p1) end,
	---seatIndex must be <= 2  
	SET_PED_VEHICLE_FORCED_SEAT_USAGE = function(ped, vehicle, seatIndex, flags, p4) invoker.call(0x952F06BEECD775CC, ped, vehicle, seatIndex, flags, p4) end,
	---  
	CLEAR_ALL_PED_VEHICLE_FORCED_SEAT_USAGE = function(ped) invoker.call(0xE6CA85E7259CE16B, ped) end,
	---This native does absolutely nothing, just a nullsub  
	SET_PED_CAN_BE_KNOCKED_OFF_BIKE = function(p0, p1) invoker.call(0xB282749D5E028163, p0, p1) end,
	---state: https://alloc8or.re/gta5/doc/enums/eKnockOffVehicle.txt  
	SET_PED_CAN_BE_KNOCKED_OFF_VEHICLE = function(ped, state) invoker.call(0x7A6535691B477C48, ped, state) end,
	---  
	CAN_KNOCK_PED_OFF_VEHICLE = function(ped) return invoker.call(0x51AC07A44D4F5B8A, ped).bool end,
	---  
	KNOCK_PED_OFF_VEHICLE = function(ped) invoker.call(0x45BBCBA77C29A841, ped) end,
	---  
	SET_PED_COORDS_NO_GANG = function(ped, posX, posY, posZ) invoker.call(0x87052FE446E07247, ped, posX, posY, posZ) end,
	---from fm_mission_controller.c4 (variable names changed for clarity):  
	---  
	---int groupID = PLAYER::GET_PLAYER_GROUP(PLAYER::PLAYER_ID());  
	---PED::GET_GROUP_SIZE(group, &unused, &groupSize);  
	---if (groupSize >= 1) {  
	---. . . . for (int memberNumber = 0; memberNumber < groupSize; memberNumber++) {  
	---. . . . . . . . Ped ped1 = PED::GET_PED_AS_GROUP_MEMBER(groupID, memberNumber);  
	---. . . . . . . . //and so on  
	GET_PED_AS_GROUP_MEMBER = function(groupID, memberNumber) return invoker.call(0x51455483CF23ED97, groupID, memberNumber).int end,
	---  
	GET_PED_AS_GROUP_LEADER = function(groupID) return invoker.call(0x5CCE68DBD5FE93EC, groupID).int end,
	---  
	SET_PED_KEEP_TASK = function(ped, toggle) invoker.call(0x971D38760FBC02EF, ped, toggle) end,
	---  
	SET_PED_ALLOW_MINOR_REACTIONS_AS_MISSION_PED = function(ped, toggle) invoker.call(0x49E50BDB8BA4DAB2, ped, toggle) end,
	---  
	IS_PED_SWIMMING = function(ped) return invoker.call(0x9DE327631295B4C2, ped).bool end,
	---  
	IS_PED_SWIMMING_UNDER_WATER = function(ped) return invoker.call(0xC024869A53992F34, ped).bool end,
	---teleports ped to coords along with the vehicle ped is in  
	SET_PED_COORDS_KEEP_VEHICLE = function(ped, posX, posY, posZ) invoker.call(0x9AFEFF481A85AB2E, ped, posX, posY, posZ) end,
	---  
	SET_PED_DIES_IN_VEHICLE = function(ped, toggle) invoker.call(0x2A30922C90C9B42C, ped, toggle) end,
	---  
	SET_CREATE_RANDOM_COPS = function(toggle) invoker.call(0x102E68B2024D536D, toggle) end,
	---  
	SET_CREATE_RANDOM_COPS_NOT_ON_SCENARIOS = function(toggle) invoker.call(0x8A4986851C4EF6E7, toggle) end,
	---  
	SET_CREATE_RANDOM_COPS_ON_SCENARIOS = function(toggle) invoker.call(0x444CB7D7DBE6973D, toggle) end,
	---  
	CAN_CREATE_RANDOM_COPS = function() return invoker.call(0x5EE2CAFF7F17770D).bool end,
	---  
	SET_PED_AS_ENEMY = function(ped, toggle) invoker.call(0x02A0C9720B854BFA, ped, toggle) end,
	---  
	SET_PED_CAN_SMASH_GLASS = function(ped, p1, p2) invoker.call(0x1CCE141467FF42A2, ped, p1, p2) end,
	---  
	IS_PED_IN_ANY_TRAIN = function(ped) return invoker.call(0x6F972C1AB75A1ED0, ped).bool end,
	---  
	IS_PED_GETTING_INTO_A_VEHICLE = function(ped) return invoker.call(0xBB062B2B5722478E, ped).bool end,
	---  
	IS_PED_TRYING_TO_ENTER_A_LOCKED_VEHICLE = function(ped) return invoker.call(0x44D28D5DDFE5F68C, ped).bool end,
	---ped can not pull out a weapon when true  
	SET_ENABLE_HANDCUFFS = function(ped, toggle) invoker.call(0xDF1AF8B5D56542FA, ped, toggle) end,
	---Used with SET_ENABLE_HANDCUFFS in decompiled scripts. From my observations, I have noticed that while being ragdolled you are not able to get up but you can still run. Your legs can also bend.  
	SET_ENABLE_BOUND_ANKLES = function(ped, toggle) invoker.call(0xC52E0F855C58FC2E, ped, toggle) end,
	---Enables diving motion when underwater.  
	SET_ENABLE_SCUBA = function(ped, toggle) invoker.call(0xF99F62004024D506, ped, toggle) end,
	---Setting ped to true allows the ped to shoot "friendlies".  
	---  
	---p2 set to true when toggle is also true seams to make peds permanently unable to aim at, even if you set p2 back to false.  
	---  
	---p1 = false & p2 = false for unable to aim at.  
	---p1 = true & p2 = false for able to aim at.   
	SET_CAN_ATTACK_FRIENDLY = function(ped, toggle, p2) invoker.call(0xB3B1CB349FF9C75D, ped, toggle, p2) end,
	---Returns the ped's alertness (0-3).  
	---  
	---Values :   
	---  
	---0 : Neutral  
	---1 : Heard something (gun shot, hit, etc)  
	---2 : Knows (the origin of the event)  
	---3 : Fully alerted (is facing the event?)  
	---  
	---If the Ped does not exist, returns -1.  
	GET_PED_ALERTNESS = function(ped) return invoker.call(0xF6AA118530443FD2, ped).int end,
	---value ranges from 0 to 3.  
	SET_PED_ALERTNESS = function(ped, value) invoker.call(0xDBA71115ED9941A6, ped, value) end,
	---  
	SET_PED_GET_OUT_UPSIDE_DOWN_VEHICLE = function(ped, toggle) invoker.call(0xBC0ED94165A48BC2, ped, toggle) end,
	---transitionSpeed is the time in seconds it takes to transition from one movement clipset to another.	ransitionSpeed is usually 1.0f  
	---  
	---List of movement clipsets:  
	---Thanks to elsewhat for list.  
	---  
	--- "ANIM_GROUP_MOVE_BALLISTIC"  
	--- "ANIM_GROUP_MOVE_LEMAR_ALLEY"  
	--- "clipset@move@trash_fast_turn"  
	--- "FEMALE_FAST_RUNNER"  
	--- "missfbi4prepp1_garbageman"  
	--- "move_characters@franklin@fire"  
	--- "move_characters@Jimmy@slow@"  
	--- "move_characters@michael@fire"  
	--- "move_f@flee@a"  
	--- "move_f@scared"  
	--- "move_f@sexy@a"  
	--- "move_heist_lester"  
	--- "move_injured_generic"  
	--- "move_lester_CaneUp"  
	--- "move_m@bag"  
	--- "MOVE_M@BAIL_BOND_NOT_TAZERED"  
	--- "MOVE_M@BAIL_BOND_TAZERED"  
	--- "move_m@brave"  
	--- "move_m@casual@d"  
	--- "move_m@drunk@moderatedrunk"  
	--- "MOVE_M@DRUNK@MODERATEDRUNK"  
	--- "MOVE_M@DRUNK@MODERATEDRUNK_HEAD_UP"  
	--- "MOVE_M@DRUNK@SLIGHTLYDRUNK"  
	--- "MOVE_M@DRUNK@VERYDRUNK"  
	--- "move_m@fire"  
	--- "move_m@gangster@var_e"  
	--- "move_m@gangster@var_f"  
	--- "move_m@gangster@var_i"  
	--- "move_m@JOG@"  
	--- "MOVE_M@PRISON_GAURD"  
	--- "MOVE_P_M_ONE"  
	--- "MOVE_P_M_ONE_BRIEFCASE"  
	--- "move_p_m_zero_janitor"  
	--- "move_p_m_zero_slow"  
	--- "move_ped_bucket"  
	--- "move_ped_crouched"  
	--- "move_ped_mop"  
	--- "MOVE_M@FEMME@"  
	--- "MOVE_F@FEMME@"  
	--- "MOVE_M@GANGSTER@NG"  
	--- "MOVE_F@GANGSTER@NG"  
	--- "MOVE_M@POSH@"  
	--- "MOVE_F@POSH@"  
	--- "MOVE_M@TOUGH_GUY@"  
	--- "MOVE_F@TOUGH_GUY@"  
	---  
	---~ NotCrunchyTaco  
	---  
	---Full list of movement clipsets by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/movementClipsetsCompact.json  
	SET_PED_MOVEMENT_CLIPSET = function(ped, clipSet, transitionSpeed) invoker.call(0xAF8A94EDE7712BEF, ped, clipSet, transitionSpeed) end,
	---If p1 is 0.0, I believe you are back to normal.   
	---If p1 is 1.0, it looks like you can only rotate the ped, not walk.  
	---  
	---Using the following code to reset back to normal  
	---PED::RESET_PED_MOVEMENT_CLIPSET(PLAYER::PLAYER_PED_ID(), 0.0);  
	RESET_PED_MOVEMENT_CLIPSET = function(ped, p1) invoker.call(0xAA74EC0CB0AAEA2C, ped, p1) end,
	---Full list of movement clipsets by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/movementClipsetsCompact.json  
	SET_PED_STRAFE_CLIPSET = function(ped, clipSet) invoker.call(0x29A28F3F8CF6D854, ped, clipSet) end,
	---  
	RESET_PED_STRAFE_CLIPSET = function(ped) invoker.call(0x20510814175EA477, ped) end,
	---  
	SET_PED_WEAPON_MOVEMENT_CLIPSET = function(ped, clipSet) invoker.call(0x2622E35B77D3ACA2, ped, clipSet) end,
	---  
	RESET_PED_WEAPON_MOVEMENT_CLIPSET = function(ped) invoker.call(0x97B0DB5B4AA74E77, ped) end,
	---  
	SET_PED_DRIVE_BY_CLIPSET_OVERRIDE = function(ped, clipset) invoker.call(0xED34AB6C5CB36520, ped, clipset) end,
	---  
	CLEAR_PED_DRIVE_BY_CLIPSET_OVERRIDE = function(ped) invoker.call(0x4AFE3690D7E0B5AC, ped) end,
	---Found in the b617d scripts:  
	---PED::SET_PED_MOTION_IN_COVER_CLIPSET_OVERRIDE(v_7, "trevor_heist_cover_2h");  
	SET_PED_MOTION_IN_COVER_CLIPSET_OVERRIDE = function(ped, p1) invoker.call(0x9DBA107B4937F809, ped, p1) end,
	---  
	CLEAR_PED_MOTION_IN_COVER_CLIPSET_OVERRIDE = function(ped) invoker.call(0xC79196DCB36F6121, ped) end,
	---  
	CLEAR_PED_FALL_UPPER_BODY_CLIPSET_OVERRIDE = function(ped) invoker.call(0x80054D7FCC70EEC6, ped) end,
	---PED::SET_PED_IN_VEHICLE_CONTEXT(l_128, MISC::GET_HASH_KEY("MINI_PROSTITUTE_LOW_PASSENGER"));  
	---PED::SET_PED_IN_VEHICLE_CONTEXT(l_128, MISC::GET_HASH_KEY("MINI_PROSTITUTE_LOW_RESTRICTED_PASSENGER"));  
	---PED::SET_PED_IN_VEHICLE_CONTEXT(l_3212, MISC::GET_HASH_KEY("MISS_FAMILY1_JIMMY_SIT"));  
	---PED::SET_PED_IN_VEHICLE_CONTEXT(l_3212, MISC::GET_HASH_KEY("MISS_FAMILY1_JIMMY_SIT_REAR"));  
	---PED::SET_PED_IN_VEHICLE_CONTEXT(l_95, MISC::GET_HASH_KEY("MISS_FAMILY2_JIMMY_BICYCLE"));  
	---PED::SET_PED_IN_VEHICLE_CONTEXT(num3, MISC::GET_HASH_KEY("MISSFBI2_MICHAEL_DRIVEBY"));  
	---PED::SET_PED_IN_VEHICLE_CONTEXT(PLAYER::PLAYER_PED_ID(), MISC::GET_HASH_KEY("MISS_ARMENIAN3_FRANKLIN_TENSE"));  
	---PED::SET_PED_IN_VEHICLE_CONTEXT(PLAYER::PLAYER_PED_ID(), MISC::GET_HASH_KEY("MISSFBI5_TREVOR_DRIVING"));  
	SET_PED_IN_VEHICLE_CONTEXT = function(ped, context) invoker.call(0x530071295899A8C6, ped, context) end,
	---  
	RESET_PED_IN_VEHICLE_CONTEXT = function(ped) invoker.call(0x22EF8FF8778030EB, ped) end,
	---Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json  
	IS_SCRIPTED_SCENARIO_PED_USING_CONDITIONAL_ANIM = function(ped, animDict, anim) return invoker.call(0x6EC47A344923E1ED, ped, animDict, anim).bool end,
	---Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json  
	---  
	---Full list of movement clipsets by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/movementClipsetsCompact.json  
	SET_PED_ALTERNATE_WALK_ANIM = function(ped, animDict, animName, p3, p4) invoker.call(0x6C60394CB4F75E9A, ped, animDict, animName, p3, p4) end,
	---  
	CLEAR_PED_ALTERNATE_WALK_ANIM = function(ped, p1) invoker.call(0x8844BBFCE30AA9E9, ped, p1) end,
	---stance:  
	---0 = idle  
	---1 = walk  
	---2 = running  
	---  
	---p5 = usually set to true  
	---  
	---Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json  
	---  
	---Full list of movement clipsets by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/movementClipsetsCompact.json  
	SET_PED_ALTERNATE_MOVEMENT_ANIM = function(ped, stance, animDictionary, animationName, p4, p5) invoker.call(0x90A43CC281FFAB46, ped, stance, animDictionary, animationName, p4, p5) end,
	---  
	CLEAR_PED_ALTERNATE_MOVEMENT_ANIM = function(ped, stance, p2) invoker.call(0xD8D19675ED5FBDCE, ped, stance, p2) end,
	---From the scripts:  
	---PED::SET_PED_GESTURE_GROUP(PLAYER::PLAYER_PED_ID(),  
	---"ANIM_GROUP_GESTURE_MISS_FRA0");  
	---PED::SET_PED_GESTURE_GROUP(PLAYER::PLAYER_PED_ID(),  
	---"ANIM_GROUP_GESTURE_MISS_DocksSetup1");  
	SET_PED_GESTURE_GROUP = function(ped, animGroupGesture) invoker.call(0xDDF803377F94AAA8, ped, animGroupGesture) end,
	---Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json  
	GET_ANIM_INITIAL_OFFSET_POSITION = function(animDict, animName, x, y, z, xRot, yRot, zRot, p8, p9) return invoker.call(0xBE22B26DD764C040, animDict, animName, x, y, z, xRot, yRot, zRot, p8, p9).scr_vec3 end,
	---Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json  
	GET_ANIM_INITIAL_OFFSET_ROTATION = function(animDict, animName, x, y, z, xRot, yRot, zRot, p8, p9) return invoker.call(0x4B805E6046EE9E47, animDict, animName, x, y, z, xRot, yRot, zRot, p8, p9).scr_vec3 end,
	---Ids  
	---0 - Head  
	---1 - Beard  
	---2 - Hair  
	---3 - Torso  
	---4 - Legs  
	---5 - Hands  
	---6 - Foot  
	---7 - ------  
	---8 - Accessories 1  
	---9 - Accessories 2  
	---10- Decals  
	---11 - Auxiliary parts for torso  
	GET_PED_DRAWABLE_VARIATION = function(ped, componentId) return invoker.call(0x67F3780DD425D4FC, ped, componentId).int end,
	---List of component/props ID  
	---gtaxscripting.blogspot.com/2016/04/gta-v-peds-component-and-props.html  
	GET_NUMBER_OF_PED_DRAWABLE_VARIATIONS = function(ped, componentId) return invoker.call(0x27561561732A7842, ped, componentId).int end,
	---List of component/props ID  
	---gtaxscripting.blogspot.com/2016/04/gta-v-peds-component-and-props.html  
	GET_PED_TEXTURE_VARIATION = function(ped, componentId) return invoker.call(0x04A355E041E004E6, ped, componentId).int end,
	---List of component/props ID  
	---gtaxscripting.blogspot.com/2016/04/gta-v-peds-component-and-props.html  
	GET_NUMBER_OF_PED_TEXTURE_VARIATIONS = function(ped, componentId, drawableId) return invoker.call(0x8F7156A3142A6BAD, ped, componentId, drawableId).int end,
	---List of component/props ID  
	---gtaxscripting.blogspot.com/2016/04/gta-v-peds-component-and-props.html  
	GET_NUMBER_OF_PED_PROP_DRAWABLE_VARIATIONS = function(ped, propId) return invoker.call(0x5FAF9754E789FB47, ped, propId).int end,
	---Need to check behavior when drawableId = -1  
	---  
	---- Doofy.Ass  
	---Why this function doesn't work and return nill value?  
	---GET_NUMBER_OF_PED_PROP_TEXTURE_VARIATIONS(PLAYER.PLAYER_PED_ID(), 0, 5)  
	---  
	---tick: scripts/addins/menu_execute.lua:51: attempt to call field 'GET_NUMBER_OF_PED_PROP_TEXTURE_VARIATIONS' (a nil value)  
	---  
	---  
	---List of component/props ID  
	---gtaxscripting.blogspot.com/2016/04/gta-v-peds-component-and-props.html  
	GET_NUMBER_OF_PED_PROP_TEXTURE_VARIATIONS = function(ped, propId, drawableId) return invoker.call(0xA6E7F1CEB523E171, ped, propId, drawableId).int end,
	---List of component/props ID  
	---gtaxscripting.blogspot.com/2016/04/gta-v-peds-component-and-props.html  
	GET_PED_PALETTE_VARIATION = function(ped, componentId) return invoker.call(0xE3DD5F2A84B42281, ped, componentId).int end,
	---  
	GET_MP_OUTFIT_DATA_FROM_METADATA = function(p0, p1) return invoker.call(0x9E30E91FB03A2CAF, p0, p1).bool end,
	---  
	GET_FM_MALE_SHOP_PED_APPAREL_ITEM_INDEX = function(p0) return invoker.call(0x1E77FA7A62EE6C4C, p0).int end,
	---  
	GET_FM_FEMALE_SHOP_PED_APPAREL_ITEM_INDEX = function(p0) return invoker.call(0xF033419D1B81FAE8, p0).int end,
	---Checks if the component variation is valid, this works great for randomizing components using loops.  
	---  
	---List of component/props ID  
	---gtaxscripting.blogspot.com/2016/04/gta-v-peds-component-and-props.html  
	---  
	---Full list of ped components by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/pedComponentVariations.json  
	IS_PED_COMPONENT_VARIATION_VALID = function(ped, componentId, drawableId, textureId) return invoker.call(0xE825F6B6CEA7671D, ped, componentId, drawableId, textureId).bool end,
	---paletteId: 0 to 3.  
	---  
	---componentId:  
	---enum ePedVarComp  
	---{  
	---	PV_COMP_INVALID = -1,  
	---	PV_COMP_HEAD,  
	---	PV_COMP_BERD,  
	---	PV_COMP_HAIR,  
	---	PV_COMP_UPPR,  
	---	PV_COMP_LOWR,  
	---	PV_COMP_HAND,  
	---	PV_COMP_FEET,  
	---	PV_COMP_TEEF,  
	---	PV_COMP_ACCS,  
	---	PV_COMP_TASK,  
	---	PV_COMP_DECL,  
	---	PV_COMP_JBIB,  
	---	PV_COMP_MAX  
	---};  
	---  
	---Examples: https://gtaxscripting.blogspot.com/2016/04/gta-v-peds-component-and-props.html  
	---  
	---Full list of ped components by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/pedComponentVariations.json  
	SET_PED_COMPONENT_VARIATION = function(ped, componentId, drawableId, textureId, paletteId) invoker.call(0x262B14F48D29DE80, ped, componentId, drawableId, textureId, paletteId) end,
	---p1 is always 0 in R* scripts.  
	---  
	---List of component/props ID  
	---gtaxscripting.blogspot.com/2016/04/gta-v-peds-component-and-props.html  
	SET_PED_RANDOM_COMPONENT_VARIATION = function(ped, p1) invoker.call(0xC8A9481A01E63C28, ped, p1) end,
	---List of component/props ID  
	---gtaxscripting.blogspot.com/2016/04/gta-v-peds-component-and-props.html  
	SET_PED_RANDOM_PROPS = function(ped) invoker.call(0xC44AA05345C992C6, ped) end,
	---Sets Ped Default Clothes  
	SET_PED_DEFAULT_COMPONENT_VARIATION = function(ped) invoker.call(0x45EEE61580806D63, ped) end,
	---  
	SET_PED_BLEND_FROM_PARENTS = function(ped, p1, p2, p3, p4) invoker.call(0x137BBD05230DB22D, ped, p1, p2, p3, p4) end,
	---The "shape" parameters control the shape of the ped's face. The "skin" parameters control the skin tone. ShapeMix and skinMix control how much the first and second IDs contribute,(typically mother and father.) ThirdMix overrides the others in favor of the third IDs. IsParent is set for "children" of the player character's grandparents during old-gen character creation. It has unknown effect otherwise.  
	---  
	---The IDs start at zero and go Male Non-DLC, Female Non-DLC, Male DLC, and Female DLC.  
	---  
	---!!!Can someone add working example for this???  
	---  
	---try this:  
	---       headBlendData headData;  
	---       GET_PED_HEAD_BLEND_DATA(PLAYER_PED_ID(), &headData);  
	---  
	---       SET_PED_HEAD_BLEND_DATA(PLAYER_PED_ID(), headData.shapeFirst, headData.shapeSecond, headData.shapeThird, headData.skinFirst, headData.skinSecond  
	---          , headData.skinThird, headData.shapeMix, headData.skinMix, headData.skinThird, 0);  
	---  
	---  
	---For more info please refer to this topic.   
	---gtaforums.com/topic/858970-all-gtao-face-ids-pedset-ped-head-blend-data-explained  
	SET_PED_HEAD_BLEND_DATA = function(ped, shapeFirstID, shapeSecondID, shapeThirdID, skinFirstID, skinSecondID, skinThirdID, shapeMix, skinMix, thirdMix, isParent) invoker.call(0x9414E18B9434C2FE, ped, shapeFirstID, shapeSecondID, shapeThirdID, skinFirstID, skinSecondID, skinThirdID, shapeMix, skinMix, thirdMix, isParent) end,
	---The pointer is to a padded struct that matches the arguments to SET_PED_HEAD_BLEND_DATA(...). There are 4 bytes of padding after each field.  
	---pass this struct in the second parameter   
	---struct headBlendData  
	---{  
	---    int shapeFirst;  
	---    int padding1;  
	---    int shapeSecond;  
	---    int padding2;  
	---    int shapeThird;  
	---    int padding3;  
	---    int skinFirst;  
	---    int padding4;  
	---    int skinSecond;  
	---    int padding5;  
	---    int skinThird;  
	---    int padding6;  
	---    float shapeMix;  
	---    int padding7;  
	---    float skinMix;  
	---    int padding8;  
	---    float thirdMix;  
	---    int padding9;  
	---    bool isParent;  
	---};  
	GET_PED_HEAD_BLEND_DATA = function(ped, headBlendData) return invoker.call(0x2746BD9D88C5C5D0, ped, headBlendData).bool end,
	---See SET_PED_HEAD_BLEND_DATA().  
	UPDATE_PED_HEAD_BLEND_DATA = function(ped, shapeMix, skinMix, thirdMix) invoker.call(0x723538F61C647C5A, ped, shapeMix, skinMix, thirdMix) end,
	---Used for freemode (online) characters.  
	---  
	---For some reason, the scripts use a rounded float for the index.  
	---Indexes:  
	---1. black  
	---2. very light blue/green  
	---3. dark blue  
	---4. brown  
	---5. darker brown  
	---6. light brown  
	---7. blue  
	---8. light blue  
	---9. pink  
	---10. yellow  
	---11. purple  
	---12. black  
	---13. dark green  
	---14. light brown  
	---15. yellow/black pattern  
	---16. light colored spiral pattern  
	---17. shiny red  
	---18. shiny half blue/half red  
	---19. half black/half light blue  
	---20. white/red perimter  
	---21. green snake  
	---22. red snake  
	---23. dark blue snake  
	---24. dark yellow  
	---25. bright yellow  
	---26. all black  
	---28. red small pupil  
	---29. devil blue/black  
	---30. white small pupil  
	---31. glossed over  
	SET_HEAD_BLEND_EYE_COLOR = function(ped, index) invoker.call(0x50B56988B170AFDF, ped, index) end,
	---A getter for _SET_PED_EYE_COLOR. Returns -1 if fails to get.  
	GET_HEAD_BLEND_EYE_COLOR = function(ped) return invoker.call(0x76BBA2CEE66D47E9, ped).int end,
	---OverlayID ranges from 0 to 12, index from 0 to _GET_NUM_OVERLAY_VALUES(overlayID)-1, and opacity from 0.0 to 1.0.   
	---  
	---overlayID       Part                  Index, to disable  
	---0               Blemishes             0 - 23, 255  
	---1               Facial Hair           0 - 28, 255  
	---2               Eyebrows              0 - 33, 255  
	---3               Ageing                0 - 14, 255  
	---4               Makeup                0 - 74, 255  
	---5               Blush                 0 - 6, 255  
	---6               Complexion            0 - 11, 255  
	---7               Sun Damage            0 - 10, 255  
	---8               Lipstick              0 - 9, 255  
	---9               Moles/Freckles        0 - 17, 255  
	---10              Chest Hair            0 - 16, 255  
	---11              Body Blemishes        0 - 11, 255  
	---12              Add Body Blemishes    0 - 1, 255  
	SET_PED_HEAD_OVERLAY = function(ped, overlayID, index, opacity) invoker.call(0x48F44967FA05CC1E, ped, overlayID, index, opacity) end,
	---Likely a char, if that overlay is not set, e.i. "None" option, returns 255;  
	---  
	---This might be the once removed native GET_PED_HEAD_OVERLAY.  
	GET_PED_HEAD_OVERLAY = function(ped, overlayID) return invoker.call(0xA60EF3B6461A4D43, ped, overlayID).int end,
	---  
	GET_PED_HEAD_OVERLAY_NUM = function(overlayID) return invoker.call(0xCF1CE768BB43480E, overlayID).int end,
	---  
	---  
	---ColorType is 1 for eyebrows, beards, and chest hair; 2 for blush and lipstick; and 0 otherwise, though not called in those cases.  
	---  
	---Called after SET_PED_HEAD_OVERLAY().  
	SET_PED_HEAD_OVERLAY_TINT = function(ped, overlayID, colorType, colorID, secondColorID) invoker.call(0x497BF74A7B9CB952, ped, overlayID, colorType, colorID, secondColorID) end,
	---  
	SET_PED_HAIR_TINT = function(ped, colorID, highlightColorID) invoker.call(0x4CFFC65454C93A49, ped, colorID, highlightColorID) end,
	---  
	GET_NUM_PED_HAIR_TINTS = function() return invoker.call(0xE5C0CF872C2AD150).int end,
	---  
	GET_NUM_PED_MAKEUP_TINTS = function() return invoker.call(0xD1F7CA1535D22818).int end,
	---Input: Haircolor index, value between 0 and 63 (inclusive).  
	---Output: RGB values for the haircolor specified in the input.  
	---  
	---This is used with the hair color swatches scaleform.  
	---Use `GET_PED_MAKEUP_TINT_COLOR` to get the makeup colors.  
	GET_PED_HAIR_TINT_COLOR = function(hairColorIndex, outR, outG, outB) invoker.call(0x4852FC386E2E1BB5, hairColorIndex, outR, outG, outB) end,
	---Input: Makeup color index, value between 0 and 63 (inclusive).  
	---Output: RGB values for the makeup color specified in the input.  
	---  
	---This is used with the makeup color swatches scaleform.  
	---Use `GET_PED_HAIR_TINT_COLOR` to get the hair colors.  
	GET_PED_MAKEUP_TINT_COLOR = function(makeupColorIndex, outR, outG, outB) invoker.call(0x013E5CFC38CD5387, makeupColorIndex, outR, outG, outB) end,
	---  
	IS_PED_HAIR_TINT_FOR_CREATOR = function(colorId) return invoker.call(0xED6D8E27A43B8CDE, colorId).bool end,
	---  
	GET_DEFAULT_SECONDARY_TINT_FOR_CREATOR = function(colorId) return invoker.call(0xEA9960D07DADCF10, colorId).int end,
	---  
	IS_PED_LIPSTICK_TINT_FOR_CREATOR = function(colorId) return invoker.call(0x3E802F11FBE27674, colorId).bool end,
	---  
	IS_PED_BLUSH_TINT_FOR_CREATOR = function(colorId) return invoker.call(0xF41B5D290C99A3D6, colorId).bool end,
	---  
	IS_PED_HAIR_TINT_FOR_BARBER = function(colorID) return invoker.call(0xE0D36E5D9E99CC21, colorID).bool end,
	---  
	GET_DEFAULT_SECONDARY_TINT_FOR_BARBER = function(colorID) return invoker.call(0xAAA6A3698A69E048, colorID).int end,
	---  
	IS_PED_LIPSTICK_TINT_FOR_BARBER = function(colorID) return invoker.call(0x0525A2C2562F3CD4, colorID).bool end,
	---  
	IS_PED_BLUSH_TINT_FOR_BARBER = function(colorID) return invoker.call(0x604E810189EE3A59, colorID).bool end,
	---  
	IS_PED_BLUSH_FACEPAINT_TINT_FOR_BARBER = function(colorId) return invoker.call(0x09E7ECA981D9B210, colorId).bool end,
	---  
	GET_TINT_INDEX_FOR_LAST_GEN_HAIR_TEXTURE = function(modelHash, drawableId, textureId) return invoker.call(0xC56FBF2F228E1DAC, modelHash, drawableId, textureId).int end,
	---Sets the various freemode face features, e.g. nose length, chin shape. Scale ranges from -1.0 to 1.0.  
	---  
	---  
	---  
	---0 - Nose Width (Thin/Wide)  
	---  
	---1 - Nose Peak (Up/Down)  
	---  
	---2 - Nose Length (Long/Short)  
	---  
	---3 - Nose Bone Curveness (Crooked/Curved)  
	---  
	---4 - Nose Tip (Up/Down)  
	---  
	---5 - Nose Bone Twist (Left/Right)  
	---  
	---6 - Eyebrow (Up/Down)  
	---  
	---7 - Eyebrow (In/Out)  
	---  
	---8 - Cheek Bones (Up/Down)  
	---  
	---9 - Cheek Sideways Bone Size (In/Out)  
	---  
	---10 - Cheek Bones Width (Puffed/Gaunt)  
	---  
	---11 - Eye Opening (Both) (Wide/Squinted)  
	---  
	---12 - Lip Thickness (Both) (Fat/Thin)  
	---  
	---13 - Jaw Bone Width (Narrow/Wide)  
	---  
	---14 - Jaw Bone Shape (Round/Square)  
	---  
	---15 - Chin Bone (Up/Down)  
	---  
	---16 - Chin Bone Length (In/Out or Backward/Forward)  
	---  
	---17 - Chin Bone Shape (Pointed/Square)  
	---  
	---18 - Chin Hole (Chin Bum)  
	---  
	---19 - Neck Thickness (Thin/Thick)  
	SET_PED_MICRO_MORPH = function(ped, index, scale) invoker.call(0x71A5C1DBA060049E, ped, index, scale) end,
	---  
	HAS_PED_HEAD_BLEND_FINISHED = function(ped) return invoker.call(0x654CD0A825161131, ped).bool end,
	---  
	FINALIZE_HEAD_BLEND = function(ped) invoker.call(0x4668D80430D6C299, ped) end,
	---p4 seems to vary from 0 to 3.  
	---Preview: https://gfycat.com/MaleRareAmazonparrot  
	SET_HEAD_BLEND_PALETTE_COLOR = function(ped, r, g, b, id) invoker.call(0xCC9682B8951C5229, ped, r, g, b, id) end,
	---  
	DISABLE_HEAD_BLEND_PALETTE_COLOR = function(ped) invoker.call(0xA21C118553BBDF02, ped) end,
	---Type equals 0 for male non-dlc, 1 for female non-dlc, 2 for male dlc, and 3 for female dlc.  
	---  
	---Used when calling SET_PED_HEAD_BLEND_DATA.  
	GET_PED_HEAD_BLEND_FIRST_INDEX = function(type) return invoker.call(0x68D353AB88B97E0C, type).int end,
	---Type equals 0 for male non-dlc, 1 for female non-dlc, 2 for male dlc, and 3 for female dlc.  
	GET_PED_HEAD_BLEND_NUM_HEADS = function(type) return invoker.call(0x5EF37013A6539C9D, type).int end,
	---from extreme3.c4  
	---PED::SET_PED_PRELOAD_VARIATION_DATA(PLAYER::PLAYER_PED_ID(), 8, PED::GET_PED_DRAWABLE_VARIATION(PLAYER::PLAYER_PED_ID(), 8), PED::GET_PED_TEXTURE_VARIATION(PLAYER::PLAYER_PED_ID(), 8));  
	---  
	---p1 is probably componentId  
	SET_PED_PRELOAD_VARIATION_DATA = function(ped, slot, drawableId, textureId) return invoker.call(0x39D55A620FCB6A3A, ped, slot, drawableId, textureId).int end,
	---  
	HAS_PED_PRELOAD_VARIATION_DATA_FINISHED = function(ped) return invoker.call(0x66680A92700F43DF, ped).bool end,
	---  
	RELEASE_PED_PRELOAD_VARIATION_DATA = function(ped) invoker.call(0x5AAB586FFEC0FD96, ped) end,
	---List of component/props ID  
	---gtaxscripting.blogspot.com/2016/04/gta-v-peds-component-and-props.html  
	SET_PED_PRELOAD_PROP_DATA = function(ped, componentId, drawableId, TextureId) return invoker.call(0x2B16A3BFF1FBCE49, ped, componentId, drawableId, TextureId).int end,
	---  
	HAS_PED_PRELOAD_PROP_DATA_FINISHED = function(ped) return invoker.call(0x784002A632822099, ped).bool end,
	---  
	RELEASE_PED_PRELOAD_PROP_DATA = function(ped) invoker.call(0xF79F9DEF0AADE61A, ped) end,
	---List of component/props ID  
	---gtaxscripting.blogspot.com/2016/04/gta-v-peds-component-and-props.html  
	GET_PED_PROP_INDEX = function(ped, componentId, p2) return invoker.call(0x898CC20EA75BACD8, ped, componentId, p2).int end,
	---ComponentId can be set to various things based on what category you're wanting to set  
	---enum PedPropsData  
	---{  
	---    PED_PROP_HATS = 0,  
	---    PED_PROP_GLASSES = 1,  
	--- PED_PROP_EARS = 2,  
	---    PED_PROP_WATCHES = 3,  
	---};  
	---Usage: SET_PED_PROP_INDEX(playerPed, PED_PROP_HATS, GET_NUMBER_OF_PED_PROP_DRAWABLE_VARIATIONS(playerPed, PED_PROP_HATS), GET_NUMBER_OF_PED_PROP_TEXTURE_VARIATIONS(playerPed, PED_PROP_HATS, 0), TRUE);  
	---  
	---List of component/props ID  
	---gtaxscripting.blogspot.com/2016/04/gta-v-peds-component-and-props.html  
	SET_PED_PROP_INDEX = function(ped, componentId, drawableId, TextureId, attach, p5) invoker.call(0x93376B65A266EB5F, ped, componentId, drawableId, TextureId, attach, p5) end,
	---List of component/props ID  
	---gtaxscripting.blogspot.com/2016/04/gta-v-peds-component-and-props.html  
	KNOCK_OFF_PED_PROP = function(ped, p1, p2, p3, p4) invoker.call(0x6FD7816A36615F48, ped, p1, p2, p3, p4) end,
	---List of component/props ID  
	---gtaxscripting.blogspot.com/2016/04/gta-v-peds-component-and-props.html  
	CLEAR_PED_PROP = function(ped, propId, p2) invoker.call(0x0943E5B8E078E76E, ped, propId, p2) end,
	---List of component/props ID  
	---gtaxscripting.blogspot.com/2016/04/gta-v-peds-component-and-props.html  
	CLEAR_ALL_PED_PROPS = function(ped, p1) invoker.call(0xCD8A7537A9B52F06, ped, p1) end,
	---  
	DROP_AMBIENT_PROP = function(ped) invoker.call(0xAFF4710E2A0A6C12, ped) end,
	---List of component/props ID  
	---gtaxscripting.blogspot.com/2016/04/gta-v-peds-component-and-props.html  
	GET_PED_PROP_TEXTURE_INDEX = function(ped, componentId) return invoker.call(0xE131A28626F81AB2, ped, componentId).int end,
	---  
	CLEAR_PED_PARACHUTE_PACK_VARIATION = function(ped) invoker.call(0x1280804F7CFD2D6C, ped) end,
	---This native sets a scuba mask for freemode models and an oxygen bottle for player_* models. It works on freemode and player_* models.  
	SET_PED_SCUBA_GEAR_VARIATION = function(ped) invoker.call(0x36C6984C3ED0C911, ped) end,
	---Removes the scubagear (for mp male: component id: 8, drawableId: 123, textureId: any) from peds. Does not play the 'remove scuba gear' animation, but instantly removes it.  
	CLEAR_PED_SCUBA_GEAR_VARIATION = function(ped) invoker.call(0xB50EB4CCB29704AC, ped) end,
	---  
	IS_USING_PED_SCUBA_GEAR_VARIATION = function(p0) return invoker.call(0xFEC9A3B1820F3331, p0).bool end,
	---works with TASK::TASK_SET_BLOCKING_OF_NON_TEMPORARY_EVENTS to make a ped completely oblivious to all events going on around him  
	SET_BLOCKING_OF_NON_TEMPORARY_EVENTS = function(ped, toggle) invoker.call(0x9F8AA94D6D97DBF4, ped, toggle) end,
	---  
	SET_PED_BOUNDS_ORIENTATION = function(ped, p1, p2, x, y, z) invoker.call(0x4F5F651ACCC9C4CF, ped, p1, p2, x, y, z) end,
	---PED::REGISTER_TARGET(l_216, PLAYER::PLAYER_PED_ID()); from re_prisonbreak.txt.  
	---  
	---l_216 = RECSBRobber1  
	REGISTER_TARGET = function(ped, target) invoker.call(0x2F25D9AEFA34FBA2, ped, target) end,
	---Based on TASK_COMBAT_HATED_TARGETS_AROUND_PED, the parameters are likely similar (PedHandle, and area to attack in).  
	REGISTER_HATED_TARGETS_AROUND_PED = function(ped, radius) invoker.call(0x9222F300BF8354FE, ped, radius) end,
	---Gets a random ped in the x/y/zRadius near the x/y/z coordinates passed.   
	---  
	---Ped Types:  
	---Any = -1  
	---Player = 1  
	---Male = 4   
	---Female = 5   
	---Cop = 6  
	---Human = 26  
	---SWAT = 27   
	---Animal = 28  
	---Army = 29  
	GET_RANDOM_PED_AT_COORD = function(x, y, z, xRadius, yRadius, zRadius, pedType) return invoker.call(0x876046A8E3A4B71C, x, y, z, xRadius, yRadius, zRadius, pedType).int end,
	---Gets the closest ped in a radius.  
	---  
	---Ped Types:  
	---Any ped = -1  
	---Player = 1  
	---Male = 4   
	---Female = 5   
	---Cop = 6  
	---Human = 26  
	---SWAT = 27   
	---Animal = 28  
	---Army = 29  
	---  
	---------------------  
	---P4 P5 P7 P8  
	---1  0  x  x  = return nearest walking Ped  
	---1  x  0  x  = return nearest walking Ped  
	---x  1  1  x  = return Ped you are using  
	---0  0  x  x  = no effect  
	---0  x  0  x  = no effect  
	---  
	---x = can be 1 or 0. Does not have any obvious changes.  
	---  
	---This function does not return ped who is:  
	---1. Standing still  
	---2. Driving  
	---3. Fleeing  
	---4. Attacking  
	---  
	---This function only work if the ped is:  
	---1. walking normally.  
	---2. waiting to cross a road.  
	---  
	---Note: PED::GET_PED_NEARBY_PEDS works for more peds.  
	GET_CLOSEST_PED = function(x, y, z, radius, p4, p5, outPed, p7, p8, pedType) return invoker.call(0xC33AB876A77F8164, x, y, z, radius, p4, p5, outPed, p7, p8, pedType).bool end,
	---Sets a value indicating whether scenario peds should be returned by the next call to a command that returns peds. Eg. GET_CLOSEST_PED.  
	SET_SCENARIO_PEDS_TO_BE_RETURNED_BY_NEXT_COMMAND = function(value) invoker.call(0x14F19A8782C8071E, value) end,
	---  
	GET_CAN_PED_BE_GRABBED_BY_SCRIPT = function(ped, p1, p2, p3, p4, p5, p6, p7, p8) return invoker.call(0x03EA03AF85A85CB7, ped, p1, p2, p3, p4, p5, p6, p7, p8).bool end,
	---Scripts use 0.2, 0.5 and 1.0. Value must be >= 0.0 && <= 1.0  
	SET_DRIVER_RACING_MODIFIER = function(driver, modifier) invoker.call(0xDED5AF5A0EA4B297, driver, modifier) end,
	---The function specifically verifies the value is equal to, or less than 1.0f. If it is greater than 1.0f, the function does nothing at all.  
	SET_DRIVER_ABILITY = function(driver, ability) invoker.call(0xB195FFA8042FC5C3, driver, ability) end,
	---range 0.0f - 1.0f  
	SET_DRIVER_AGGRESSIVENESS = function(driver, aggressiveness) invoker.call(0xA731F608CA104E3C, driver, aggressiveness) end,
	---Prevents the ped from going limp.  
	---  
	---[Example: Can prevent peds from falling when standing on moving vehicles.]  
	CAN_PED_RAGDOLL = function(ped) return invoker.call(0x128F79EDCECE4FD5, ped).bool end,
	---p4/p5: Unused in TU27  
	---Ragdoll Types:  
	---**0**: CTaskNMRelax  
	---**1**: CTaskNMScriptControl: Hardcoded not to work in networked environments.  
	---**Else**: CTaskNMBalance  
	---time1- Time(ms) Ped is in ragdoll mode; only applies to ragdoll types 0 and not 1.  
	---  
	---time2- Unknown time, in milliseconds  
	---  
	---ragdollType-  
	---0 : Normal ragdoll  
	---1 : Falls with stiff legs/body  
	---2 : Narrow leg stumble(may not fall)  
	---3 : Wide leg stumble(may not fall)  
	---  
	---p4, p5, p6- No idea. In R*'s scripts they are usually either "true, true, false" or "false, false, false".  
	---  
	---  
	---  
	---  
	---EDIT 3/11/16: unclear what 'mircoseconds' mean-- a microsecond is 1000x a ms, so time2 must be 1000x time1?  more testing needed.  -sob  
	---  
	---Edit Mar 21, 2017: removed part about time2 being the microseconds version of time1. this just isn't correct. time2 is in milliseconds, and time1 and time2 don't seem to be connected in any way.  
	SET_PED_TO_RAGDOLL = function(ped, time1, time2, ragdollType, p4, p5, p6) return invoker.call(0xAE99FB955581844A, ped, time1, time2, ragdollType, p4, p5, p6).bool end,
	---Return variable is never used in R*'s scripts.  
	---  
	---Not sure what p2 does. It seems like it would be a time judging by it's usage in R*'s scripts, but didn't seem to affect anything in my testings.  
	---  
	---enum eRagdollType  
	---{  
	--- RD_MALE=0,  
	--- RD_FEMALE = 1,  
	--- RD_MALE_LARGE = 2,  
	--- RD_CUSTOM = 3,  
	---}  
	---  
	---x, y, and z are coordinates, most likely to where the ped will fall.  
	---  
	---p8 to p13 are always 0f in R*'s scripts.  
	---  
	---(Simplified) Example of the usage of the function from R*'s scripts:  
	---ped::set_ped_to_ragdoll_with_fall(ped, 1500, 2000, 1, -entity::get_entity_forward_vector(ped), 1f, 0f, 0f, 0f, 0f, 0f, 0f);  
	---  
	SET_PED_TO_RAGDOLL_WITH_FALL = function(ped, time, p2, ragdollType, x, y, z, velocity, p8, p9, p10, p11, p12, p13) return invoker.call(0xD76632D99E4966C8, ped, time, p2, ragdollType, x, y, z, velocity, p8, p9, p10, p11, p12, p13).bool end,
	---Causes Ped to ragdoll on collision with any object (e.g Running into trashcan). If applied to player you will sometimes trip on the sidewalk.  
	SET_PED_RAGDOLL_ON_COLLISION = function(ped, toggle) invoker.call(0xF0A4F1BBF4FA7497, ped, toggle) end,
	---If the ped handle passed through the parenthesis is in a ragdoll state this will return true.  
	IS_PED_RAGDOLL = function(ped) return invoker.call(0x47E4E977581C5B55, ped).bool end,
	---  
	IS_PED_RUNNING_RAGDOLL_TASK = function(ped) return invoker.call(0xE3B6097CC25AA69E, ped).bool end,
	---  
	SET_PED_RAGDOLL_FORCE_FALL = function(ped) invoker.call(0x01F6594B923B9251, ped) end,
	---  
	RESET_PED_RAGDOLL_TIMER = function(ped) invoker.call(0x9FA4664CF62E47E8, ped) end,
	---  
	SET_PED_CAN_RAGDOLL = function(ped, toggle) invoker.call(0xB128377056A54E2A, ped, toggle) end,
	---  
	IS_PED_RUNNING_MELEE_TASK = function(ped) return invoker.call(0xD1871251F3B5ACD7, ped).bool end,
	---  
	IS_PED_RUNNING_MOBILE_PHONE_TASK = function(ped) return invoker.call(0x2AFE52F782F25775, ped).bool end,
	---  
	IS_MOBILE_PHONE_TO_PED_EAR = function(ped) return invoker.call(0xA3F3564A5B3646C0, ped).bool end,
	---Works for both player and peds,  
	---  
	---enum eRagdollBlockingFlags  
	---{  
	--- RBF_BULLET_IMPACT = 0,  
	--- RBF_VEHICLE_IMPACT = 1,  
	--- RBF_FIRE = 2,  
	--- RBF_ELECTROCUTION = 3,  
	--- RBF_PLAYER_IMPACT = 4,  
	--- RBF_EXPLOSION = 5,0  
	--- RBF_IMPACT_OBJECT = 6,  
	--- RBF_MELEE = 7,  
	--- RBF_RUBBER_BULLET = 8,  
	--- RBF_FALLING = 9,  
	--- RBF_WATER_JET = 10,  
	--- RBF_DROWNING = 11,  
	--- _0x9F52E2C4 = 12,  
	--- RBF_PLAYER_BUMP = 13,  
	--- RBF_PLAYER_RAGDOLL_BUMP = 14,  
	--- RBF_PED_RAGDOLL_BUMP = 15,  
	--- RBF_VEHICLE_GRAB = 16,  
	--- RBF_SMOKE_GRENADE = 17,  
	---};  
	---  
	---  
	SET_RAGDOLL_BLOCKING_FLAGS = function(ped, blockingFlag) invoker.call(0x26695EC767728D84, ped, blockingFlag) end,
	---See SET_RAGDOLL_BLOCKING_FLAGS for flags  
	CLEAR_RAGDOLL_BLOCKING_FLAGS = function(ped, blockingFlag) invoker.call(0xD86D101FCFD00A4B, ped, blockingFlag) end,
	---  
	SET_PED_ANGLED_DEFENSIVE_AREA = function(ped, p1, p2, p3, p4, p5, p6, p7, p8, p9) invoker.call(0xC7F76DF27A5045A1, ped, p1, p2, p3, p4, p5, p6, p7, p8, p9) end,
	---  
	SET_PED_SPHERE_DEFENSIVE_AREA = function(ped, x, y, z, radius, p5, p6) invoker.call(0x9D3151A373974804, ped, x, y, z, radius, p5, p6) end,
	---  
	SET_PED_DEFENSIVE_SPHERE_ATTACHED_TO_PED = function(ped, target, xOffset, yOffset, zOffset, radius, p6) invoker.call(0xF9B8F91AAD3B953E, ped, target, xOffset, yOffset, zOffset, radius, p6) end,
	---  
	SET_PED_DEFENSIVE_SPHERE_ATTACHED_TO_VEHICLE = function(ped, target, xOffset, yOffset, zOffset, radius, p6) invoker.call(0xE4723DB6E736CCFF, ped, target, xOffset, yOffset, zOffset, radius, p6) end,
	---  
	SET_PED_DEFENSIVE_AREA_ATTACHED_TO_PED = function(ped, attachPed, p2, p3, p4, p5, p6, p7, p8, p9, p10) invoker.call(0x4EF47FE21698A8B6, ped, attachPed, p2, p3, p4, p5, p6, p7, p8, p9, p10) end,
	---  
	SET_PED_DEFENSIVE_AREA_DIRECTION = function(ped, p1, p2, p3, p4) invoker.call(0x413C6C763A4AFFAD, ped, p1, p2, p3, p4) end,
	---Ped will no longer get angry when you stay near him.  
	REMOVE_PED_DEFENSIVE_AREA = function(ped, toggle) invoker.call(0x74D4E028107450A9, ped, toggle) end,
	---  
	GET_PED_DEFENSIVE_AREA_POSITION = function(ped, p1) return invoker.call(0x3C06B8786DD94CD1, ped, p1).scr_vec3 end,
	---  
	IS_PED_DEFENSIVE_AREA_ACTIVE = function(ped, p1) return invoker.call(0xBA63D9FE45412247, ped, p1).bool end,
	---  
	SET_PED_PREFERRED_COVER_SET = function(ped, itemSet) invoker.call(0x8421EB4DA7E391B9, ped, itemSet) end,
	---  
	REMOVE_PED_PREFERRED_COVER_SET = function(ped) invoker.call(0xFDDB234CF74073D9, ped) end,
	---It will revive/cure the injured ped. The condition is ped must not be dead.  
	---  
	---Upon setting and converting the health int, found, if health falls below 5, the ped will lay on the ground in pain(Maximum default health is 100).  
	---  
	---This function is well suited there.  
	REVIVE_INJURED_PED = function(ped) invoker.call(0x8D8ACD8388CD99CE, ped) end,
	---This function will simply bring the dead person back to life.  
	---  
	---Try not to use it alone, since using this function alone, will make peds fall through ground in hell(well for the most of the times).  
	---  
	---Instead, before calling this function, you may want to declare the position, where your Resurrected ped to be spawn at.(For instance, Around 2 floats of Player's current position.)   
	---  
	---Also, disabling any assigned task immediately helped in the number of scenarios, where If you want peds to perform certain decided tasks.  
	RESURRECT_PED = function(ped) invoker.call(0x71BC8E838B9C6035, ped) end,
	---NOTE: Debugging functions are not present in the retail version of the game.  
	---  
	---*untested but char *name could also be a hash for a localized string  
	SET_PED_NAME_DEBUG = function(ped, name) invoker.call(0x98EFA132A4117BE1, ped, name) end,
	---Gets the offset the specified ped has moved since the previous tick.  
	---  
	---If worldSpace is false, the returned offset is relative to the ped. That is, if the ped has moved 1 meter right and 5 meters forward, it'll return 1,5,0.  
	---  
	---If worldSpace is true, the returned offset is relative to the world. That is, if the ped has moved 1 meter on the X axis and 5 meters on the Y axis, it'll return 1,5,0.  
	GET_PED_EXTRACTED_DISPLACEMENT = function(ped, worldSpace) return invoker.call(0xE0AF41401ADF87E3, ped, worldSpace).scr_vec3 end,
	---  
	SET_PED_DIES_WHEN_INJURED = function(ped, toggle) invoker.call(0x5BA7919BED300023, ped, toggle) end,
	---  
	SET_PED_ENABLE_WEAPON_BLOCKING = function(ped, toggle) invoker.call(0x97A790315D3831FD, ped, toggle) end,
	---p1 was always 1 (true).  
	---  
	---Kicks the ped from the current vehicle and keeps the rendering-focus on this ped (also disables its collision). If doing this for your player ped, you'll still be able to drive the vehicle.  
	SPECIAL_FUNCTION_DO_NOT_USE = function(ped, p1) invoker.call(0xF9ACF4A08098EA25, ped, p1) end,
	---  
	RESET_PED_VISIBLE_DAMAGE = function(ped) invoker.call(0x3AC1F7B898F30C05, ped) end,
	---  
	APPLY_PED_BLOOD_DAMAGE_BY_ZONE = function(ped, p1, p2, p3, p4) invoker.call(0x816F6981C60BF53B, ped, p1, p2, p3, p4) end,
	---woundTypes:  
	---- soak_splat  
	---- wound_sheet  
	---- BulletSmall  
	---- BulletLarge  
	---- ShotgunSmall  
	---- ShotgunSmallMonolithic  
	---- ShotgunLarge  
	---- ShotgunLargeMonolithic  
	---- NonFatalHeadshot  
	---- stab  
	---- BasicSlash  
	---- Scripted_Ped_Splash_Back  
	---- BackSplash  
	APPLY_PED_BLOOD = function(ped, boneIndex, xRot, yRot, zRot, woundType) invoker.call(0x83F7E01C7B769A26, ped, boneIndex, xRot, yRot, zRot, woundType) end,
	---  
	APPLY_PED_BLOOD_BY_ZONE = function(ped, p1, p2, p3, p4) invoker.call(0x3311E47B91EDCBBC, ped, p1, p2, p3, p4) end,
	---  
	APPLY_PED_BLOOD_SPECIFIC = function(ped, p1, p2, p3, p4, p5, p6, p7, p8) invoker.call(0xEF0D582CBF2D9B0F, ped, p1, p2, p3, p4, p5, p6, p7, p8) end,
	---enum eDamageZone  
	---{  
	---	DZ_Torso = 0,  
	---	DZ_Head,  
	---	DZ_LeftArm,  
	---	DZ_RightArm,  
	---	DZ_LeftLeg,  
	---	DZ_RightLeg,  
	---};  
	---  
	---Decal Names:  
	---scar  
	---blushing  
	---cs_flush_anger  
	---cs_flush_anger_face  
	---bruise  
	---bruise_large  
	---herpes  
	---ArmorBullet  
	---basic_dirt_cloth  
	---basic_dirt_skin  
	---cs_trev1_dirt  
	---  
	---APPLY_PED_DAMAGE_DECAL(ped, 1, 0.5f, 0.513f, 0f, 1f, unk, 0, 0, "blushing");  
	APPLY_PED_DAMAGE_DECAL = function(ped, damageZone, xOffset, yOffset, heading, scale, alpha, variation, fadeIn, decalName) invoker.call(0x397C38AA7B4A5F83, ped, damageZone, xOffset, yOffset, heading, scale, alpha, variation, fadeIn, decalName) end,
	---Damage Packs:  
	---  
	---"SCR_TrevorTreeBang"  
	---"HOSPITAL_0"  
	---"HOSPITAL_1"  
	---"HOSPITAL_2"  
	---"HOSPITAL_3"  
	---"HOSPITAL_4"  
	---"HOSPITAL_5"  
	---"HOSPITAL_6"  
	---"HOSPITAL_7"  
	---"HOSPITAL_8"  
	---"HOSPITAL_9"  
	---"SCR_Dumpster"  
	---"BigHitByVehicle"  
	---"SCR_Finale_Michael_Face"  
	---"SCR_Franklin_finb"  
	---"SCR_Finale_Michael"  
	---"SCR_Franklin_finb2"  
	---"Explosion_Med"  
	---"SCR_Torture"  
	---"SCR_TracySplash"  
	---"Skin_Melee_0"  
	---  
	---Additional damage packs:  
	---  
	---gist.github.com/alexguirre/f3f47f75ddcf617f416f3c8a55ae2227  
	---Full list of ped damage packs by DurtyFree https://github.com/DurtyFree/gta-v-data-dumps/blob/master/pedDamagePacks.json  
	APPLY_PED_DAMAGE_PACK = function(ped, damagePack, damage, mult) invoker.call(0x46DF918788CB093F, ped, damagePack, damage, mult) end,
	---  
	CLEAR_PED_BLOOD_DAMAGE = function(ped) invoker.call(0x8FE22675A5A45817, ped) end,
	---Somehow related to changing ped's clothes.  
	CLEAR_PED_BLOOD_DAMAGE_BY_ZONE = function(ped, p1) invoker.call(0x56E3B78C5408D9F4, ped, p1) end,
	---  
	HIDE_PED_BLOOD_DAMAGE_BY_ZONE = function(ped, p1, p2) invoker.call(0x62AB793144DE75DC, ped, p1, p2) end,
	---p1: from 0 to 5 in the b617d scripts.  
	---p2: "blushing" and "ALL" found in the b617d scripts.  
	CLEAR_PED_DAMAGE_DECAL_BY_ZONE = function(ped, p1, p2) invoker.call(0x523C79AEEFCC4A2A, ped, p1, p2) end,
	---  
	GET_PED_DECORATIONS_STATE = function(ped) return invoker.call(0x71EAB450D86954A1, ped).int end,
	---  
	MARK_PED_DECORATIONS_AS_CLONED_FROM_LOCAL_PLAYER = function(ped, p1) invoker.call(0x2B694AFCF64E6994, ped, p1) end,
	---It clears the wetness of the selected Ped/Player. Clothes have to be wet to notice the difference.  
	CLEAR_PED_WETNESS = function(ped) invoker.call(0x9C720776DAA43E7E, ped) end,
	---It adds the wetness level to the player clothing/outfit. As if player just got out from water surface.  
	---  
	---  
	SET_PED_WETNESS_HEIGHT = function(ped, height) invoker.call(0x44CB6447D2571AA0, ped, height) end,
	---combined with PED::SET_PED_WETNESS_HEIGHT(), this native makes the ped drenched in water up to the height specified in the other function  
	SET_PED_WETNESS_ENABLED_THIS_FRAME = function(ped) invoker.call(0xB5485E4907B53019, ped) end,
	---  
	SET_PED_WETNESS = function(ped, wetLevel) invoker.call(0xAC0BB4D87777CAE2, ped, wetLevel) end,
	---  
	CLEAR_PED_ENV_DIRT = function(ped) invoker.call(0x6585D955A68452A5, ped) end,
	---Sweat is set to 100.0 or 0.0 in the decompiled scripts.  
	SET_PED_SWEAT = function(ped, sweat) invoker.call(0x27B0405F59637D1F, ped, sweat) end,
	---Applies an Item from a PedDecorationCollection to a ped. These include tattoos and shirt decals.  
	---  
	---collection - PedDecorationCollection filename hash  
	---overlay - Item name hash  
	---  
	---Example:  
	---Entry inside "mpbeach_overlays.xml" -  
	---<Item>  
	---  <uvPos x="0.500000" y="0.500000" />  
	---  <scale x="0.600000" y="0.500000" />  
	---  <rotation value="0.000000" />  
	---  <nameHash>FM_Hair_Fuzz</nameHash>  
	---  <txdHash>mp_hair_fuzz</txdHash>  
	---  <txtHash>mp_hair_fuzz</txtHash>  
	---  <zone>ZONE_HEAD</zone>  
	---  <type>TYPE_TATTOO</type>  
	---  <faction>FM</faction>  
	---  <garment>All</garment>  
	---  <gender>GENDER_DONTCARE</gender>  
	---  <award />  
	---  <awardLevel />  
	---</Item>  
	---  
	---Code:  
	---PED::ADD_PED_DECORATION_FROM_HASHES(PLAYER::PLAYER_PED_ID(), MISC::GET_HASH_KEY("mpbeach_overlays"), MISC::GET_HASH_KEY("fm_hair_fuzz"))  
	---  
	---Full list of ped overlays / decorations by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/pedOverlayCollections.json  
	ADD_PED_DECORATION_FROM_HASHES = function(ped, collection, overlay) invoker.call(0x5F5D1665E352A839, ped, collection, overlay) end,
	---Full list of ped overlays / decorations by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/pedOverlayCollections.json  
	ADD_PED_DECORATION_FROM_HASHES_IN_CORONA = function(ped, collection, overlay) invoker.call(0x5619BFA07CFD7833, ped, collection, overlay) end,
	---Returns the zoneID for the overlay if it is a member of collection.  
	---enum ePedDecorationZone  
	---{  
	---	ZONE_TORSO = 0,  
	---	ZONE_HEAD = 1,  
	---	ZONE_LEFT_ARM = 2,  
	---	ZONE_RIGHT_ARM = 3,  
	---	ZONE_LEFT_LEG = 4,  
	---	ZONE_RIGHT_LEG = 5,  
	---	ZONE_MEDALS = 6,  
	---	ZONE_INVALID = 7  
	---};  
	---  
	---Full list of ped overlays / decorations by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/pedOverlayCollections.json  
	GET_PED_DECORATION_ZONE_FROM_HASHES = function(collection, overlay) return invoker.call(0x9FD452BFBE7A7A8B, collection, overlay).int end,
	---  
	CLEAR_PED_DECORATIONS = function(ped) invoker.call(0x0E5173C163976E38, ped) end,
	---  
	CLEAR_PED_DECORATIONS_LEAVE_SCARS = function(ped) invoker.call(0xE3B27E70CEAB9F0C, ped) end,
	---Despite this function's name, it simply returns whether the specified handle is a Ped.  
	WAS_PED_SKELETON_UPDATED = function(ped) return invoker.call(0x11B499C1E0FF8559, ped).bool end,
	---Gets the position of the specified bone of the specified ped.  
	---  
	---ped: The ped to get the position of a bone from.  
	---boneId: The ID of the bone to get the position from. This is NOT the index.  
	---offsetX: The X-component of the offset to add to the position relative to the bone's rotation.  
	---offsetY: The Y-component of the offset to add to the position relative to the bone's rotation.  
	---offsetZ: The Z-component of the offset to add to the position relative to the bone's rotation.  
	GET_PED_BONE_COORDS = function(ped, boneId, offsetX, offsetY, offsetZ) return invoker.call(0x17C07FC640E86B4E, ped, boneId, offsetX, offsetY, offsetZ).scr_vec3 end,
	---Creates a new NaturalMotion message.  
	---  
	---startImmediately: If set to true, the character will perform the message the moment it receives it by GIVE_PED_NM_MESSAGE. If false, the Ped will get the message but won't perform it yet. While it's a boolean value, if negative, the message will not be initialized.  
	---messageId: The ID of the NaturalMotion message.  
	---  
	---If a message already exists, this function does nothing. A message exists until the point it has been successfully dispatched by GIVE_PED_NM_MESSAGE.  
	CREATE_NM_MESSAGE = function(startImmediately, messageId) invoker.call(0x418EF2A1BCE56685, startImmediately, messageId) end,
	---Sends the message that was created by a call to CREATE_NM_MESSAGE to the specified Ped.  
	---  
	---If a message hasn't been created already, this function does nothing.  
	---If the Ped is not ragdolled with Euphoria enabled, this function does nothing.  
	---The following call can be used to ragdoll the Ped with Euphoria enabled: SET_PED_TO_RAGDOLL(ped, 4000, 5000, 1, 1, 1, 0);  
	---  
	---Call order:  
	---SET_PED_TO_RAGDOLL  
	---CREATE_NM_MESSAGE  
	---GIVE_PED_NM_MESSAGE  
	---  
	---Multiple messages can be chained. Eg. to make the ped stagger and swing his arms around, the following calls can be made:  
	---SET_PED_TO_RAGDOLL(ped, 4000, 5000, 1, 1, 1, 0);  
	---CREATE_NM_MESSAGE(true, 0); // stopAllBehaviours - Stop all other behaviours, in case the Ped is already doing some Euphoria stuff.  
	---GIVE_PED_NM_MESSAGE(ped); // Dispatch message to Ped.  
	---CREATE_NM_MESSAGE(true, 1151); // staggerFall - Attempt to walk while falling.  
	---GIVE_PED_NM_MESSAGE(ped); // Dispatch message to Ped.  
	---CREATE_NM_MESSAGE(true, 372); // armsWindmill - Swing arms around.  
	---GIVE_PED_NM_MESSAGE(ped); // Dispatch message to Ped.  
	GIVE_PED_NM_MESSAGE = function(ped) invoker.call(0xB158DFCCC56E5C5B, ped) end,
	---  
	ADD_SCENARIO_BLOCKING_AREA = function(x1, y1, z1, x2, y2, z2, p6, p7, p8, p9, p10) return invoker.call(0x1B5C85C612E5256E, x1, y1, z1, x2, y2, z2, p6, p7, p8, p9, p10).int end,
	---  
	REMOVE_SCENARIO_BLOCKING_AREAS = function() invoker.call(0xD37401D78A929A49) end,
	---  
	REMOVE_SCENARIO_BLOCKING_AREA = function(p0, p1) invoker.call(0x31D16B74C6E29D66, p0, p1) end,
	---  
	SET_SCENARIO_PEDS_SPAWN_IN_SPHERE_AREA = function(x, y, z, range, p4) invoker.call(0x28157D43CF600981, x, y, z, range, p4) end,
	---  
	DOES_SCENARIO_BLOCKING_AREA_EXISTS = function(x1, y1, z1, x2, y2, z2) return invoker.call(0x8A24B067D175A7BD, x1, y1, z1, x2, y2, z2).bool end,
	---Full list of ped scenarios by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/scenariosCompact.json  
	IS_PED_USING_SCENARIO = function(ped, scenario) return invoker.call(0x1BF094736DD62C2E, ped, scenario).bool end,
	---  
	IS_PED_USING_ANY_SCENARIO = function(ped) return invoker.call(0x57AB4A3080F85143, ped).bool end,
	---  
	SET_PED_PANIC_EXIT_SCENARIO = function(p0, p1, p2, p3) return invoker.call(0xFE07FF6495D52E2A, p0, p1, p2, p3).bool end,
	---  
	TOGGLE_SCENARIO_PED_COWER_IN_PLACE = function(ped, toggle) invoker.call(0x9A77DFD295E29B09, ped, toggle) end,
	---  
	TRIGGER_PED_SCENARIO_PANICEXITTOFLEE = function(p0, p1, p2, p3) return invoker.call(0x25361A96E0F7E419, p0, p1, p2, p3).bool end,
	---  
	SET_PED_SHOULD_PLAY_DIRECTED_NORMAL_SCENARIO_EXIT = function(p0, p1, p2, p3) return invoker.call(0xEC6935EBE0847B90, p0, p1, p2, p3).bool end,
	---  
	SET_PED_SHOULD_PLAY_NORMAL_SCENARIO_EXIT = function(ped) invoker.call(0xA3A9299C4F2ADB98, ped) end,
	---  
	SET_PED_SHOULD_PLAY_IMMEDIATE_SCENARIO_EXIT = function(ped) invoker.call(0xF1C03A5352243A30, ped) end,
	---  
	SET_PED_SHOULD_PLAY_FLEE_SCENARIO_EXIT = function(ped, p1, p2, p3) return invoker.call(0xEEED8FAFEC331A70, ped, p1, p2, p3).bool end,
	---  
	SET_PED_SHOULD_IGNORE_SCENARIO_EXIT_COLLISION_CHECKS = function(ped, p1) invoker.call(0x425AECF167663F48, ped, p1) end,
	---  
	SET_PED_SHOULD_IGNORE_SCENARIO_NAV_CHECKS = function(p0, p1) invoker.call(0x5B6010B3CBC29095, p0, p1) end,
	---  
	SET_PED_SHOULD_PROBE_FOR_SCENARIO_EXITS_IN_ONE_FRAME = function(p0, p1) invoker.call(0xCEDA60A74219D064, p0, p1) end,
	---  
	IS_PED_GESTURING = function(p0) return invoker.call(0xC30BDAEE47256C13, p0).bool end,
	---  
	RESET_FACIAL_IDLE_ANIM = function(ped) invoker.call(0x007FDE5A7897E426, ped) end,
	---Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json  
	PLAY_FACIAL_ANIM = function(ped, animName, animDict) invoker.call(0xE1E65CA8AC9C00ED, ped, animName, animDict) end,
	---Clipsets:  
	---facials@gen_female@base  
	---facials@gen_male@base  
	---facials@p_m_zero@base  
	---  
	---Typically followed with SET_FACIAL_IDLE_ANIM_OVERRIDE:  
	---mood_drunk_1  
	---mood_stressed_1  
	---mood_happy_1  
	---mood_talking_1  
	---  
	SET_FACIAL_CLIPSET = function(ped, animDict) invoker.call(0x5687C7F05B39E401, ped, animDict) end,
	---Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json  
	SET_FACIAL_IDLE_ANIM_OVERRIDE = function(ped, animName, animDict) invoker.call(0xFFC24B988B938B38, ped, animName, animDict) end,
	---  
	CLEAR_FACIAL_IDLE_ANIM_OVERRIDE = function(ped) invoker.call(0x726256CC1EEB182F, ped) end,
	---  
	SET_PED_CAN_PLAY_GESTURE_ANIMS = function(ped, toggle) invoker.call(0xBAF20C5432058024, ped, toggle) end,
	---p2 usually 0  
	SET_PED_CAN_PLAY_VISEME_ANIMS = function(ped, toggle, p2) invoker.call(0xF833DDBA3B104D43, ped, toggle, p2) end,
	---  
	SET_PED_IS_IGNORED_BY_AUTO_OPEN_DOORS = function(ped, p1) invoker.call(0x33A60D8BDD6E508C, ped, p1) end,
	---  
	SET_PED_CAN_PLAY_AMBIENT_ANIMS = function(ped, toggle) invoker.call(0x6373D1349925A70E, ped, toggle) end,
	---  
	SET_PED_CAN_PLAY_AMBIENT_BASE_ANIMS = function(ped, toggle) invoker.call(0x0EB0585D15254740, ped, toggle) end,
	---  
	TRIGGER_IDLE_ANIMATION_ON_PED = function(ped) invoker.call(0xC2EE020F5FB4DB53, ped) end,
	---  
	SET_PED_CAN_ARM_IK = function(ped, toggle) invoker.call(0x6C3B4D6D13B4C841, ped, toggle) end,
	---  
	SET_PED_CAN_HEAD_IK = function(ped, toggle) invoker.call(0xC11C18092C5530DC, ped, toggle) end,
	---  
	SET_PED_CAN_LEG_IK = function(ped, toggle) invoker.call(0x73518ECE2485412B, ped, toggle) end,
	---  
	SET_PED_CAN_TORSO_IK = function(ped, toggle) invoker.call(0xF2B7106D37947CE0, ped, toggle) end,
	---  
	SET_PED_CAN_TORSO_REACT_IK = function(ped, p1) invoker.call(0xF5846EDB26A98A24, ped, p1) end,
	---  
	SET_PED_CAN_TORSO_VEHICLE_IK = function(ped, p1) invoker.call(0x6647C5F6F5792496, ped, p1) end,
	---  
	SET_PED_CAN_USE_AUTO_CONVERSATION_LOOKAT = function(ped, toggle) invoker.call(0xEC4686EC06434678, ped, toggle) end,
	---  
	IS_PED_HEADTRACKING_PED = function(ped1, ped2) return invoker.call(0x5CD3CB88A7F8850D, ped1, ped2).bool end,
	---  
	IS_PED_HEADTRACKING_ENTITY = function(ped, entity) return invoker.call(0x813A0A7C9D2E831F, ped, entity).bool end,
	---This is only called once in the scripts.  
	---  
	---sub_1CD9(&l_49, 0, getElem(3, &l_34, 4), "MICHAEL", 0, 1);  
	---                    sub_1CA8("WORLD_HUMAN_SMOKING", 2);  
	---                    PED::SET_PED_PRIMARY_LOOKAT(getElem(3, &l_34, 4), PLAYER::PLAYER_PED_ID());  
	SET_PED_PRIMARY_LOOKAT = function(ped, lookAt) invoker.call(0xCD17B554996A8D9E, ped, lookAt) end,
	---  
	SET_PED_CLOTH_PIN_FRAMES = function(p0, p1) invoker.call(0x78C4E9961DB3EB5B, p0, p1) end,
	---  
	SET_PED_CLOTH_PACKAGE_INDEX = function(p0, p1) invoker.call(0x82A3D6D9CC2CB8E3, p0, p1) end,
	---  
	SET_PED_CLOTH_PRONE = function(p0, p1) invoker.call(0xA660FAF550EB37E5, p0, p1) end,
	---enum ePedConfigFlags  
	---{  
	---	_CPED_CONFIG_FLAG_0xC63DE95E = 1,  
	---	CPED_CONFIG_FLAG_NoCriticalHits = 2,  
	---	CPED_CONFIG_FLAG_DrownsInWater = 3,  
	---	CPED_CONFIG_FLAG_DisableReticuleFixedLockon = 4,  
	---	_CPED_CONFIG_FLAG_0x37D196F4 = 5,  
	---	_CPED_CONFIG_FLAG_0xE2462399 = 6,  
	---	CPED_CONFIG_FLAG_UpperBodyDamageAnimsOnly = 7,  
	---	_CPED_CONFIG_FLAG_0xEDDEB838 = 8,  
	---	_CPED_CONFIG_FLAG_0xB398B6FD = 9,  
	---	_CPED_CONFIG_FLAG_0xF6664E68 = 10,  
	---	_CPED_CONFIG_FLAG_0xA05E7CA3 = 11,  
	---	_CPED_CONFIG_FLAG_0xCE394045 = 12,  
	---	CPED_CONFIG_FLAG_NeverLeavesGroup = 13,  
	---	_CPED_CONFIG_FLAG_0xCD8D1411 = 14,  
	---	_CPED_CONFIG_FLAG_0xB031F1A9 = 15,  
	---	_CPED_CONFIG_FLAG_0xFE65BEE3 = 16,  
	---	CPED_CONFIG_FLAG_BlockNonTemporaryEvents = 17,  
	---	_CPED_CONFIG_FLAG_0x380165BD = 18,  
	---	_CPED_CONFIG_FLAG_0x07C045C7 = 19,  
	---	_CPED_CONFIG_FLAG_0x583B5E2D = 20,  
	---	_CPED_CONFIG_FLAG_0x475EDA58 = 21,  
	---	_CPED_CONFIG_FLAG_0x8629D05B = 22,  
	---	_CPED_CONFIG_FLAG_0x1522968B = 23,  
	---	CPED_CONFIG_FLAG_IgnoreSeenMelee = 24,  
	---	_CPED_CONFIG_FLAG_0x4CC09C4B = 25,  
	---	_CPED_CONFIG_FLAG_0x034F3053 = 26,  
	---	_CPED_CONFIG_FLAG_0xD91BA7CC = 27,  
	---	_CPED_CONFIG_FLAG_0x5C8DC66E = 28,  
	---	CPED_CONFIG_FLAG_GetOutUndriveableVehicle = 29,  
	---	_CPED_CONFIG_FLAG_0x6580B9D2 = 30,  
	---	_CPED_CONFIG_FLAG_0x0EF7A297 = 31,  
	---	CPED_CONFIG_FLAG_WillFlyThruWindscreen = 32,  
	---	CPED_CONFIG_FLAG_DieWhenRagdoll = 33,  
	---	CPED_CONFIG_FLAG_HasHelmet = 34,  
	---	CPED_CONFIG_FLAG_UseHelmet = 35,  
	---	CPED_CONFIG_FLAG_DontTakeOffHelmet = 36,  
	---	_CPED_CONFIG_FLAG_0xB130D17B = 37,  
	---	_CPED_CONFIG_FLAG_0x5F071200 = 38,  
	---	CPED_CONFIG_FLAG_DisableEvasiveDives = 39,  
	---	_CPED_CONFIG_FLAG_0xC287AAFF = 40,  
	---	_CPED_CONFIG_FLAG_0x203328CC = 41,  
	---	CPED_CONFIG_FLAG_DontInfluenceWantedLevel = 42,  
	---	CPED_CONFIG_FLAG_DisablePlayerLockon = 43,  
	---	CPED_CONFIG_FLAG_DisableLockonToRandomPeds = 44,  
	---	CPED_CONFIG_FLAG_AllowLockonToFriendlyPlayers = 45,  
	---	_CPED_CONFIG_FLAG_0xDB115BFA = 46,  
	---	CPED_CONFIG_FLAG_PedBeingDeleted = 47,  
	---	CPED_CONFIG_FLAG_BlockWeaponSwitching = 48,  
	---	_CPED_CONFIG_FLAG_0xF8E99565 = 49,  
	---	_CPED_CONFIG_FLAG_0xDD17FEE6 = 50,  
	---	_CPED_CONFIG_FLAG_0x7ED9B2C9 = 51,  
	---	_CPED_CONFIG_FLAG_NoCollison = 52,  
	---	_CPED_CONFIG_FLAG_0x5A6C1F6E = 53,  
	---	_CPED_CONFIG_FLAG_0xD749FC41 = 54,  
	---	_CPED_CONFIG_FLAG_0x357F63F3 = 55,  
	---	_CPED_CONFIG_FLAG_0xC5E60961 = 56,  
	---	_CPED_CONFIG_FLAG_0x29275C3E = 57,  
	---	CPED_CONFIG_FLAG_IsFiring = 58,  
	---	CPED_CONFIG_FLAG_WasFiring = 59,  
	---	CPED_CONFIG_FLAG_IsStanding = 60,  
	---	CPED_CONFIG_FLAG_WasStanding = 61,  
	---	CPED_CONFIG_FLAG_InVehicle = 62,  
	---	CPED_CONFIG_FLAG_OnMount = 63,  
	---	CPED_CONFIG_FLAG_AttachedToVehicle = 64,  
	---	CPED_CONFIG_FLAG_IsSwimming = 65,  
	---	CPED_CONFIG_FLAG_WasSwimming = 66,  
	---	CPED_CONFIG_FLAG_IsSkiing = 67,  
	---	CPED_CONFIG_FLAG_IsSitting = 68,  
	---	CPED_CONFIG_FLAG_KilledByStealth = 69,  
	---	CPED_CONFIG_FLAG_KilledByTakedown = 70,  
	---	CPED_CONFIG_FLAG_Knockedout = 71,  
	---	_CPED_CONFIG_FLAG_0x3E3C4560 = 72,  
	---	_CPED_CONFIG_FLAG_0x2994C7B7 = 73,  
	---	_CPED_CONFIG_FLAG_0x6D59D275 = 74,  
	---	CPED_CONFIG_FLAG_UsingCoverPoint = 75,  
	---	CPED_CONFIG_FLAG_IsInTheAir = 76,  
	---	_CPED_CONFIG_FLAG_0x2D493FB7 = 77,  
	---	CPED_CONFIG_FLAG_IsAimingGun = 78,  
	---	_CPED_CONFIG_FLAG_0x14D69875 = 79,  
	---	_CPED_CONFIG_FLAG_0x40B05311 = 80,  
	---	_CPED_CONFIG_FLAG_0x8B230BC5 = 81,  
	---	_CPED_CONFIG_FLAG_0xC74E5842 = 82,  
	---	_CPED_CONFIG_FLAG_0x9EA86147 = 83,  
	---	_CPED_CONFIG_FLAG_0x674C746C = 84,  
	---	_CPED_CONFIG_FLAG_0x3E56A8C2 = 85,  
	---	_CPED_CONFIG_FLAG_0xC144A1EF = 86,  
	---	_CPED_CONFIG_FLAG_0x0548512D = 87,  
	---	_CPED_CONFIG_FLAG_0x31C93909 = 88,  
	---	_CPED_CONFIG_FLAG_0xA0269315 = 89,  
	---	_CPED_CONFIG_FLAG_0xD4D59D4D = 90,  
	---	_CPED_CONFIG_FLAG_0x411D4420 = 91,  
	---	_CPED_CONFIG_FLAG_0xDF4AEF0D = 92,  
	---	CPED_CONFIG_FLAG_ForcePedLoadCover = 93,  
	---	_CPED_CONFIG_FLAG_0x300E4CD3 = 94,  
	---	_CPED_CONFIG_FLAG_0xF1C5BF04 = 95,  
	---	_CPED_CONFIG_FLAG_0x89C2EF13 = 96,  
	---	CPED_CONFIG_FLAG_VaultFromCover = 97,  
	---	_CPED_CONFIG_FLAG_0x02A852C8 = 98,  
	---	_CPED_CONFIG_FLAG_0x3D9407F1 = 99,  
	---	_CPED_CONFIG_FLAG_IsDrunk = 100, // 0x319B4558  
	---	CPED_CONFIG_FLAG_ForcedAim = 101,  
	---	_CPED_CONFIG_FLAG_0xB942D71A = 102,  
	---	_CPED_CONFIG_FLAG_0xD26C55A8 = 103,  
	---	CPED_CONFIG_FLAG_OpenDoorArmIK = 104,  
	---	CPED_CONFIG_FLAG_ForceReload = 105,  
	---	CPED_CONFIG_FLAG_DontActivateRagdollFromVehicleImpact = 106,  
	---	CPED_CONFIG_FLAG_DontActivateRagdollFromBulletImpact = 107,  
	---	CPED_CONFIG_FLAG_DontActivateRagdollFromExplosions = 108,  
	---	CPED_CONFIG_FLAG_DontActivateRagdollFromFire = 109,  
	---	CPED_CONFIG_FLAG_DontActivateRagdollFromElectrocution = 110,  
	---	_CPED_CONFIG_FLAG_0x83C0A4BF = 111,  
	---	_CPED_CONFIG_FLAG_0x0E0FAF8C = 112,  
	---	CPED_CONFIG_FLAG_KeepWeaponHolsteredUnlessFired = 113,  
	---	_CPED_CONFIG_FLAG_0x43B80B79 = 114,  
	---	_CPED_CONFIG_FLAG_0x0D2A9309 = 115,  
	---	CPED_CONFIG_FLAG_GetOutBurningVehicle = 116,  
	---	CPED_CONFIG_FLAG_BumpedByPlayer = 117,  
	---	CPED_CONFIG_FLAG_RunFromFiresAndExplosions = 118,  
	---	CPED_CONFIG_FLAG_TreatAsPlayerDuringTargeting = 119,  
	---	CPED_CONFIG_FLAG_IsHandCuffed = 120,  
	---	CPED_CONFIG_FLAG_IsAnkleCuffed = 121,  
	---	CPED_CONFIG_FLAG_DisableMelee = 122,  
	---	CPED_CONFIG_FLAG_DisableUnarmedDrivebys = 123,  
	---	CPED_CONFIG_FLAG_JustGetsPulledOutWhenElectrocuted = 124,  
	---	_CPED_CONFIG_FLAG_0x5FED6BFD = 125,  
	---	CPED_CONFIG_FLAG_WillNotHotwireLawEnforcementVehicle = 126,  
	---	CPED_CONFIG_FLAG_WillCommandeerRatherThanJack = 127,  
	---	CPED_CONFIG_FLAG_CanBeAgitated = 128,  
	---	CPED_CONFIG_FLAG_ForcePedToFaceLeftInCover = 129,  
	---	CPED_CONFIG_FLAG_ForcePedToFaceRightInCover = 130,  
	---	CPED_CONFIG_FLAG_BlockPedFromTurningInCover = 131,  
	---	CPED_CONFIG_FLAG_KeepRelationshipGroupAfterCleanUp = 132,  
	---	CPED_CONFIG_FLAG_ForcePedToBeDragged = 133,  
	---	CPED_CONFIG_FLAG_PreventPedFromReactingToBeingJacked = 134,  
	---	CPED_CONFIG_FLAG_IsScuba = 135,  
	---	CPED_CONFIG_FLAG_WillArrestRatherThanJack = 136,  
	---	CPED_CONFIG_FLAG_RemoveDeadExtraFarAway = 137,  
	---	CPED_CONFIG_FLAG_RidingTrain = 138,  
	---	CPED_CONFIG_FLAG_ArrestResult = 139,  
	---	CPED_CONFIG_FLAG_CanAttackFriendly = 140,  
	---	CPED_CONFIG_FLAG_WillJackAnyPlayer = 141,  
	---	_CPED_CONFIG_FLAG_0x6901E731 = 142,  
	---	_CPED_CONFIG_FLAG_0x9EC9BF6C = 143,  
	---	CPED_CONFIG_FLAG_WillJackWantedPlayersRatherThanStealCar = 144,  
	---	CPED_CONFIG_FLAG_ShootingAnimFlag = 145,  
	---	CPED_CONFIG_FLAG_DisableLadderClimbing = 146,  
	---	CPED_CONFIG_FLAG_StairsDetected = 147,  
	---	CPED_CONFIG_FLAG_SlopeDetected = 148,  
	---	_CPED_CONFIG_FLAG_0x1A15670B = 149,  
	---	CPED_CONFIG_FLAG_CowerInsteadOfFlee = 150,  
	---	CPED_CONFIG_FLAG_CanActivateRagdollWhenVehicleUpsideDown = 151,  
	---	CPED_CONFIG_FLAG_AlwaysRespondToCriesForHelp = 152,  
	---	CPED_CONFIG_FLAG_DisableBloodPoolCreation = 153,  
	---	CPED_CONFIG_FLAG_ShouldFixIfNoCollision = 154,  
	---	CPED_CONFIG_FLAG_CanPerformArrest = 155,  
	---	CPED_CONFIG_FLAG_CanPerformUncuff = 156,  
	---	CPED_CONFIG_FLAG_CanBeArrested = 157,  
	---	_CPED_CONFIG_FLAG_0xF7960FF5 = 158,  
	---	CPED_CONFIG_FLAG_PlayerPreferFrontSeatMP = 159,  
	---	_CPED_CONFIG_FLAG_0x0C6C3099 = 160,  
	---	_CPED_CONFIG_FLAG_0x645F927A = 161,  
	---	_CPED_CONFIG_FLAG_0xA86549B9 = 162,  
	---	_CPED_CONFIG_FLAG_0x8AAF337A = 163,  
	---	_CPED_CONFIG_FLAG_0x13BAA6E7 = 164,  
	---	_CPED_CONFIG_FLAG_0x5FB9D1F5 = 165,  
	---	CPED_CONFIG_FLAG_IsInjured = 166,  
	---	CPED_CONFIG_FLAG_DontEnterVehiclesInPlayersGroup = 167,  
	---	_CPED_CONFIG_FLAG_0xD8072639 = 168,  
	---	CPED_CONFIG_FLAG_PreventAllMeleeTaunts = 169,  
	---	CPED_CONFIG_FLAG_ForceDirectEntry = 170,  
	---	CPED_CONFIG_FLAG_AlwaysSeeApproachingVehicles = 171,  
	---	CPED_CONFIG_FLAG_CanDiveAwayFromApproachingVehicles = 172,  
	---	CPED_CONFIG_FLAG_AllowPlayerToInterruptVehicleEntryExit = 173,  
	---	CPED_CONFIG_FLAG_OnlyAttackLawIfPlayerIsWanted = 174,  
	---	_CPED_CONFIG_FLAG_0x90008BFA = 175,  
	---	_CPED_CONFIG_FLAG_0x07C7A910 = 176,  
	---	CPED_CONFIG_FLAG_PedsJackingMeDontGetIn = 177,  
	---	_CPED_CONFIG_FLAG_0xCE4E8BE2 = 178,  
	---	CPED_CONFIG_FLAG_PedIgnoresAnimInterruptEvents = 179,  
	---	CPED_CONFIG_FLAG_IsInCustody = 180,  
	---	CPED_CONFIG_FLAG_ForceStandardBumpReactionThresholds = 181,  
	---	CPED_CONFIG_FLAG_LawWillOnlyAttackIfPlayerIsWanted = 182,  
	---	CPED_CONFIG_FLAG_IsAgitated = 183,  
	---	CPED_CONFIG_FLAG_PreventAutoShuffleToDriversSeat = 184,  
	---	CPED_CONFIG_FLAG_UseKinematicModeWhenStationary = 185,  
	---	CPED_CONFIG_FLAG_EnableWeaponBlocking = 186,  
	---	CPED_CONFIG_FLAG_HasHurtStarted = 187,  
	---	CPED_CONFIG_FLAG_DisableHurt = 188,  
	---	CPED_CONFIG_FLAG_PlayerIsWeird = 189,  
	---	_CPED_CONFIG_FLAG_0x32FC208B = 190,  
	---	_CPED_CONFIG_FLAG_0x0C296E5A = 191,  
	---	_CPED_CONFIG_FLAG_0xE63B73EC = 192,  
	---	CPED_CONFIG_FLAG_DoNothingWhenOnFootByDefault = 193,  
	---	CPED_CONFIG_FLAG_UsingScenario = 194,  
	---	CPED_CONFIG_FLAG_VisibleOnScreen = 195,  
	---	_CPED_CONFIG_FLAG_0xD88C58A1 = 196,  
	---	_CPED_CONFIG_FLAG_0x5A3DCF43 = 197,  
	---	_CPED_CONFIG_FLAG_0xEA02B420 = 198,  
	---	CPED_CONFIG_FLAG_DontActivateRagdollOnVehicleCollisionWhenDead = 199,  
	---	CPED_CONFIG_FLAG_HasBeenInArmedCombat = 200,  
	---	_CPED_CONFIG_FLAG_0x5E6466F6 = 201,  
	---	CPED_CONFIG_FLAG_Avoidance_Ignore_All = 202,  
	---	CPED_CONFIG_FLAG_Avoidance_Ignored_by_All = 203,  
	---	CPED_CONFIG_FLAG_Avoidance_Ignore_Group1 = 204,  
	---	CPED_CONFIG_FLAG_Avoidance_Member_of_Group1 = 205,  
	---	CPED_CONFIG_FLAG_ForcedToUseSpecificGroupSeatIndex = 206,  
	---	_CPED_CONFIG_FLAG_0x415B26B9 = 207,  
	---	CPED_CONFIG_FLAG_DisableExplosionReactions = 208,  
	---	CPED_CONFIG_FLAG_DodgedPlayer = 209,  
	---	CPED_CONFIG_FLAG_WaitingForPlayerControlInterrupt = 210,  
	---	CPED_CONFIG_FLAG_ForcedToStayInCover = 211,  
	---	CPED_CONFIG_FLAG_GeneratesSoundEvents = 212,  
	---	CPED_CONFIG_FLAG_ListensToSoundEvents = 213,  
	---	CPED_CONFIG_FLAG_AllowToBeTargetedInAVehicle = 214,  
	---	CPED_CONFIG_FLAG_WaitForDirectEntryPointToBeFreeWhenExiting = 215,  
	---	CPED_CONFIG_FLAG_OnlyRequireOnePressToExitVehicle = 216,  
	---	CPED_CONFIG_FLAG_ForceExitToSkyDive = 217,  
	---	_CPED_CONFIG_FLAG_0x3C7DF9DF = 218,  
	---	_CPED_CONFIG_FLAG_0x848FFEF2 = 219,  
	---	CPED_CONFIG_FLAG_DontEnterLeadersVehicle = 220,  
	---	CPED_CONFIG_FLAG_DisableExitToSkyDive = 221,  
	---	_CPED_CONFIG_FLAG_0x84F722FA = 222,  
	---	_CPED_CONFIG_FLAG_Shrink = 223, // 0xD1B87B1F  
	---	_CPED_CONFIG_FLAG_0x728AA918 = 224,  
	---	CPED_CONFIG_FLAG_DisablePotentialToBeWalkedIntoResponse = 225,  
	---	CPED_CONFIG_FLAG_DisablePedAvoidance = 226,  
	---	CPED_CONFIG_FLAG_ForceRagdollUponDeath = 227,  
	---	_CPED_CONFIG_FLAG_0x1EA7225F = 228,  
	---	CPED_CONFIG_FLAG_DisablePanicInVehicle = 229,  
	---	CPED_CONFIG_FLAG_AllowedToDetachTrailer = 230,  
	---	_CPED_CONFIG_FLAG_0xFC3E572D = 231,  
	---	_CPED_CONFIG_FLAG_0x08E9F9CF = 232,  
	---	_CPED_CONFIG_FLAG_0x2D3BA52D = 233,  
	---	_CPED_CONFIG_FLAG_0xFD2F53EA = 234,  
	---	_CPED_CONFIG_FLAG_0x31A1B03B = 235,  
	---	CPED_CONFIG_FLAG_IsHoldingProp = 236,  
	---	CPED_CONFIG_FLAG_BlocksPathingWhenDead = 237,  
	---	_CPED_CONFIG_FLAG_0xCE57C9A3 = 238,  
	---	_CPED_CONFIG_FLAG_0x26149198 = 239,  
	---	CPED_CONFIG_FLAG_ForceSkinCharacterCloth = 240,  
	---	CPED_CONFIG_FLAG_LeaveEngineOnWhenExitingVehicles = 241,  
	---	CPED_CONFIG_FLAG_PhoneDisableTextingAnimations = 242,  
	---	CPED_CONFIG_FLAG_PhoneDisableTalkingAnimations = 243,  
	---	CPED_CONFIG_FLAG_PhoneDisableCameraAnimations = 244,  
	---	CPED_CONFIG_FLAG_DisableBlindFiringInShotReactions = 245,  
	---	CPED_CONFIG_FLAG_AllowNearbyCoverUsage = 246,  
	---	_CPED_CONFIG_FLAG_0x0C754ACA = 247,  
	---	CPED_CONFIG_FLAG_CanPlayInCarIdles = 248,  
	---	CPED_CONFIG_FLAG_CanAttackNonWantedPlayerAsLaw = 249,  
	---	CPED_CONFIG_FLAG_WillTakeDamageWhenVehicleCrashes = 250,  
	---	CPED_CONFIG_FLAG_AICanDrivePlayerAsRearPassenger = 251,  
	---	CPED_CONFIG_FLAG_PlayerCanJackFriendlyPlayers = 252,  
	---	CPED_CONFIG_FLAG_OnStairs = 253,  
	---	_CPED_CONFIG_FLAG_0xE1A2F73F = 254,  
	---	CPED_CONFIG_FLAG_AIDriverAllowFriendlyPassengerSeatEntry = 255,  
	---	_CPED_CONFIG_FLAG_0xF1EB20A9 = 256,  
	---	CPED_CONFIG_FLAG_AllowMissionPedToUseInjuredMovement = 257,  
	---	_CPED_CONFIG_FLAG_0x329DCF1A = 258,  
	---	_CPED_CONFIG_FLAG_0x8D90DD1B = 259,  
	---	_CPED_CONFIG_FLAG_0xB8A292B7 = 260,  
	---	CPED_CONFIG_FLAG_PreventUsingLowerPrioritySeats = 261,  
	---	_CPED_CONFIG_FLAG_0x2AF558F0 = 262,  
	---	_CPED_CONFIG_FLAG_0x82251455 = 263,  
	---	_CPED_CONFIG_FLAG_0x30CF498B = 264,  
	---	_CPED_CONFIG_FLAG_0xE1CD50AF = 265,  
	---	_CPED_CONFIG_FLAG_0x72E4AE48 = 266,  
	---	_CPED_CONFIG_FLAG_0xC2657EA1 = 267,  
	---	CPED_CONFIG_FLAG_TeleportToLeaderVehicle = 268,  
	---	CPED_CONFIG_FLAG_Avoidance_Ignore_WeirdPedBuffer = 269,  
	---	CPED_CONFIG_FLAG_OnStairSlope = 270,  
	---	_CPED_CONFIG_FLAG_0xA0897933 = 271,  
	---	CPED_CONFIG_FLAG_DontBlipCop = 272,  
	---	CPED_CONFIG_FLAG_ClimbedShiftedFence = 273,  
	---	_CPED_CONFIG_FLAG_0xF7823618 = 274,  
	---	CPED_CONFIG_FLAG_KillWhenTrapped = 275,  
	---	CPED_CONFIG_FLAG_EdgeDetected = 276,  
	---	_CPED_CONFIG_FLAG_0x92B67896 = 277,  
	---	_CPED_CONFIG_FLAG_0xCAD677C9 = 278,  
	---	CPED_CONFIG_FLAG_AvoidTearGas = 279,  
	---	_CPED_CONFIG_FLAG_0x5276AC7B = 280,  
	---	CPED_CONFIG_FLAG_DisableGoToWritheWhenInjured = 281,  
	---	CPED_CONFIG_FLAG_OnlyUseForcedSeatWhenEnteringHeliInGroup = 282,  
	---	_CPED_CONFIG_FLAG_0x9139724D = 283,  
	---	_CPED_CONFIG_FLAG_0xA1457461 = 284,  
	---	CPED_CONFIG_FLAG_DisableWeirdPedEvents = 285,  
	---	CPED_CONFIG_FLAG_ShouldChargeNow = 286,  
	---	CPED_CONFIG_FLAG_RagdollingOnBoat = 287,  
	---	CPED_CONFIG_FLAG_HasBrandishedWeapon = 288,  
	---	_CPED_CONFIG_FLAG_0x1B9EE8A1 = 289,  
	---	_CPED_CONFIG_FLAG_0xF3F5758C = 290,  
	---	_CPED_CONFIG_FLAG_0x2A9307F1 = 291,  
	---	_CPED_CONFIG_FLAG_FreezePosition = 292, // 0x7403D216  
	---	_CPED_CONFIG_FLAG_0xA06A3C6C = 293,  
	---	CPED_CONFIG_FLAG_DisableShockingEvents = 294,  
	---	_CPED_CONFIG_FLAG_0xF8DA25A5 = 295,  
	---	CPED_CONFIG_FLAG_NeverReactToPedOnRoof = 296,  
	---	_CPED_CONFIG_FLAG_0xB31F1187 = 297,  
	---	_CPED_CONFIG_FLAG_0x84315402 = 298,  
	---	CPED_CONFIG_FLAG_DisableShockingDrivingOnPavementEvents = 299,  
	---	_CPED_CONFIG_FLAG_0xC7829B67 = 300,  
	---	CPED_CONFIG_FLAG_DisablePedConstraints = 301,  
	---	CPED_CONFIG_FLAG_ForceInitialPeekInCover = 302,  
	---	_CPED_CONFIG_FLAG_0x2ADA871B = 303,  
	---	_CPED_CONFIG_FLAG_0x47BC8A58 = 304,  
	---	CPED_CONFIG_FLAG_DisableJumpingFromVehiclesAfterLeader = 305,  
	---	_CPED_CONFIG_FLAG_0x4A133C50 = 306,  
	---	_CPED_CONFIG_FLAG_0xC58099C3 = 307,  
	---	_CPED_CONFIG_FLAG_0xF3D76D41 = 308,  
	---	_CPED_CONFIG_FLAG_0xB0EEE9F2 = 309,  
	---	CPED_CONFIG_FLAG_IsInCluster = 310,  
	---	CPED_CONFIG_FLAG_ShoutToGroupOnPlayerMelee = 311,  
	---	CPED_CONFIG_FLAG_IgnoredByAutoOpenDoors = 312,  
	---	_CPED_CONFIG_FLAG_0xD4136C22 = 313,  
	---	CPED_CONFIG_FLAG_ForceIgnoreMeleeActiveCombatant = 314,  
	---	CPED_CONFIG_FLAG_CheckLoSForSoundEvents = 315,  
	---	_CPED_CONFIG_FLAG_0xD5C98277 = 316,  
	---	CPED_CONFIG_FLAG_CanSayFollowedByPlayerAudio = 317,  
	---	CPED_CONFIG_FLAG_ActivateRagdollFromMinorPlayerContact = 318,  
	---	_CPED_CONFIG_FLAG_0xD8BE1D54 = 319,  
	---	CPED_CONFIG_FLAG_ForcePoseCharacterCloth = 320,  
	---	CPED_CONFIG_FLAG_HasClothCollisionBounds = 321,  
	---	CPED_CONFIG_FLAG_HasHighHeels = 322,  
	---	_CPED_CONFIG_FLAG_0x86B01E54 = 323,  
	---	CPED_CONFIG_FLAG_DontBehaveLikeLaw = 324,  
	---	_CPED_CONFIG_FLAG_0xC03B736C = 325, // SpawnedAtScenario?  
	---	CPED_CONFIG_FLAG_DisablePoliceInvestigatingBody = 326,  
	---	CPED_CONFIG_FLAG_DisableWritheShootFromGround = 327,  
	---	CPED_CONFIG_FLAG_LowerPriorityOfWarpSeats = 328,  
	---	CPED_CONFIG_FLAG_DisableTalkTo = 329,  
	---	CPED_CONFIG_FLAG_DontBlip = 330,  
	---	CPED_CONFIG_FLAG_IsSwitchingWeapon = 331,  
	---	CPED_CONFIG_FLAG_IgnoreLegIkRestrictions = 332,  
	---	_CPED_CONFIG_FLAG_0x150468FD = 333,  
	---	_CPED_CONFIG_FLAG_0x914EBD6B = 334,  
	---	_CPED_CONFIG_FLAG_0x79AF3B6D = 335,  
	---	_CPED_CONFIG_FLAG_0x75C7A632 = 336,  
	---	_CPED_CONFIG_FLAG_0x52D530E2 = 337,  
	---	_CPED_CONFIG_FLAG_0xDB2A90E0 = 338,  
	---	CPED_CONFIG_FLAG_AllowTaskDoNothingTimeslicing = 339,  
	---	_CPED_CONFIG_FLAG_0x12ADB567 = 340,  
	---	_CPED_CONFIG_FLAG_0x105C8518 = 341,  
	---	CPED_CONFIG_FLAG_NotAllowedToJackAnyPlayers = 342,  
	---	_CPED_CONFIG_FLAG_0xED152C3E = 343,  
	---	_CPED_CONFIG_FLAG_0xA0EFE6A8 = 344,  
	---	CPED_CONFIG_FLAG_AlwaysLeaveTrainUponArrival = 345,  
	---	_CPED_CONFIG_FLAG_0xCDDFE830 = 346,  
	---	CPED_CONFIG_FLAG_OnlyWritheFromWeaponDamage = 347,  
	---	CPED_CONFIG_FLAG_UseSloMoBloodVfx = 348,  
	---	CPED_CONFIG_FLAG_EquipJetpack = 349,  
	---	CPED_CONFIG_FLAG_PreventDraggedOutOfCarThreatResponse = 350,  
	---	_CPED_CONFIG_FLAG_0xE13D1F7C = 351,  
	---	_CPED_CONFIG_FLAG_0x40E25FB9 = 352,  
	---	_CPED_CONFIG_FLAG_0x930629D9 = 353,  
	---	_CPED_CONFIG_FLAG_0xECCF0C7F = 354,  
	---	_CPED_CONFIG_FLAG_0xB6E9613B = 355,  
	---	CPED_CONFIG_FLAG_ForceDeepSurfaceCheck = 356,  
	---	CPED_CONFIG_FLAG_DisableDeepSurfaceAnims = 357,  
	---	CPED_CONFIG_FLAG_DontBlipNotSynced = 358,  
	---	CPED_CONFIG_FLAG_IsDuckingInVehicle = 359,  
	---	CPED_CONFIG_FLAG_PreventAutoShuffleToTurretSeat = 360,  
	---	CPED_CONFIG_FLAG_DisableEventInteriorStatusCheck = 361,  
	---	CPED_CONFIG_FLAG_HasReserveParachute = 362,  
	---	CPED_CONFIG_FLAG_UseReserveParachute = 363,  
	---	CPED_CONFIG_FLAG_TreatDislikeAsHateWhenInCombat = 364,  
	---	CPED_CONFIG_FLAG_OnlyUpdateTargetWantedIfSeen = 365,  
	---	CPED_CONFIG_FLAG_AllowAutoShuffleToDriversSeat = 366,  
	---	_CPED_CONFIG_FLAG_0xD7E07D37 = 367,  
	---	_CPED_CONFIG_FLAG_0x03C4FD24 = 368,  
	---	_CPED_CONFIG_FLAG_0x7675789A = 369,  
	---	_CPED_CONFIG_FLAG_0xB7288A88 = 370,  
	---	_CPED_CONFIG_FLAG_0xC06B6291 = 371,  
	---	CPED_CONFIG_FLAG_PreventReactingToSilencedCloneBullets = 372,  
	---	CPED_CONFIG_FLAG_DisableInjuredCryForHelpEvents = 373,  
	---	CPED_CONFIG_FLAG_NeverLeaveTrain = 374,  
	---	CPED_CONFIG_FLAG_DontDropJetpackOnDeath = 375,  
	---	_CPED_CONFIG_FLAG_0x147F1FFB = 376,  
	---	_CPED_CONFIG_FLAG_0x4376DD79 = 377,  
	---	_CPED_CONFIG_FLAG_0xCD3DB518 = 378,  
	---	_CPED_CONFIG_FLAG_0xFE4BA4B6 = 379,  
	---	CPED_CONFIG_FLAG_DisableAutoEquipHelmetsInBikes = 380,  
	---	_CPED_CONFIG_FLAG_0xBCD816CD = 381,  
	---	_CPED_CONFIG_FLAG_0xCF02DD69 = 382,  
	---	_CPED_CONFIG_FLAG_0xF73AFA2E = 383,  
	---	_CPED_CONFIG_FLAG_0x80B9A9D0 = 384,  
	---	_CPED_CONFIG_FLAG_0xF601F7EE = 385,  
	---	_CPED_CONFIG_FLAG_0xA91350FC = 386,  
	---	_CPED_CONFIG_FLAG_0x3AB23B96 = 387,  
	---	CPED_CONFIG_FLAG_IsClimbingLadder = 388,  
	---	CPED_CONFIG_FLAG_HasBareFeet = 389,  
	---	CPED_CONFIG_FLAG_UNUSED_REPLACE_ME_2 = 390,  
	---	CPED_CONFIG_FLAG_GoOnWithoutVehicleIfItIsUnableToGetBackToRoad = 391,  
	---	CPED_CONFIG_FLAG_BlockDroppingHealthSnacksOnDeath = 392,  
	---	_CPED_CONFIG_FLAG_0xC11D3E8F = 393,  
	---	CPED_CONFIG_FLAG_ForceThreatResponseToNonFriendToFriendMeleeActions = 394,  
	---	CPED_CONFIG_FLAG_DontRespondToRandomPedsDamage = 395,  
	---	CPED_CONFIG_FLAG_AllowContinuousThreatResponseWantedLevelUpdates = 396,  
	---	CPED_CONFIG_FLAG_KeepTargetLossResponseOnCleanup = 397,  
	---	CPED_CONFIG_FLAG_PlayersDontDragMeOutOfCar = 398,  
	---	CPED_CONFIG_FLAG_BroadcastRepondedToThreatWhenGoingToPointShooting = 399,  
	---	CPED_CONFIG_FLAG_IgnorePedTypeForIsFriendlyWith = 400,  
	---	CPED_CONFIG_FLAG_TreatNonFriendlyAsHateWhenInCombat = 401,  
	---	CPED_CONFIG_FLAG_DontLeaveVehicleIfLeaderNotInVehicle = 402,  
	---	_CPED_CONFIG_FLAG_0x5E5B9591 = 403,  
	---	CPED_CONFIG_FLAG_AllowMeleeReactionIfMeleeProofIsOn = 404,  
	---	_CPED_CONFIG_FLAG_0x77840177 = 405,  
	---	_CPED_CONFIG_FLAG_0x1C7ACAC4 = 406,  
	---	CPED_CONFIG_FLAG_UseNormalExplosionDamageWhenBlownUpInVehicle = 407,  
	---	CPED_CONFIG_FLAG_DisableHomingMissileLockForVehiclePedInside = 408,  
	---	CPED_CONFIG_FLAG_DisableTakeOffScubaGear = 409,  
	---	CPED_CONFIG_FLAG_IgnoreMeleeFistWeaponDamageMult = 410,  
	---	CPED_CONFIG_FLAG_LawPedsCanFleeFromNonWantedPlayer = 411,  
	---	CPED_CONFIG_FLAG_ForceBlipSecurityPedsIfPlayerIsWanted = 412,  
	---	CPED_CONFIG_FLAG_IsHolsteringWeapon = 413,  
	---	CPED_CONFIG_FLAG_UseGoToPointForScenarioNavigation = 414,  
	---	CPED_CONFIG_FLAG_DontClearLocalPassengersWantedLevel = 415,  
	---	CPED_CONFIG_FLAG_BlockAutoSwapOnWeaponPickups = 416,  
	---	CPED_CONFIG_FLAG_ThisPedIsATargetPriorityForAI = 417,  
	---	CPED_CONFIG_FLAG_IsSwitchingHelmetVisor = 418,  
	---	CPED_CONFIG_FLAG_ForceHelmetVisorSwitch = 419,  
	---	_CPED_CONFIG_FLAG_0xCFF5F6DE = 420,  
	---	CPED_CONFIG_FLAG_UseOverrideFootstepPtFx = 421,  
	---	CPED_CONFIG_FLAG_DisableVehicleCombat = 422,  
	---	_CPED_CONFIG_FLAG_0xFE401D26 = 423,  
	---	CPED_CONFIG_FLAG_FallsLikeAircraft = 424,  
	---	_CPED_CONFIG_FLAG_0x2B42AE82 = 425,  
	---	CPED_CONFIG_FLAG_UseLockpickVehicleEntryAnimations = 426,  
	---	CPED_CONFIG_FLAG_IgnoreInteriorCheckForSprinting = 427,  
	---	CPED_CONFIG_FLAG_SwatHeliSpawnWithinLastSpottedLocation = 428,  
	---	CPED_CONFIG_FLAG_DisableStartEngine = 429,  
	---	CPED_CONFIG_FLAG_IgnoreBeingOnFire = 430,  
	---	CPED_CONFIG_FLAG_DisableTurretOrRearSeatPreference = 431,  
	---	CPED_CONFIG_FLAG_DisableWantedHelicopterSpawning = 432,  
	---	CPED_CONFIG_FLAG_UseTargetPerceptionForCreatingAimedAtEvents = 433,  
	---	CPED_CONFIG_FLAG_DisableHomingMissileLockon = 434,  
	---	CPED_CONFIG_FLAG_ForceIgnoreMaxMeleeActiveSupportCombatants = 435,  
	---	CPED_CONFIG_FLAG_StayInDefensiveAreaWhenInVehicle = 436,  
	---	CPED_CONFIG_FLAG_DontShoutTargetPosition = 437,  
	---	CPED_CONFIG_FLAG_DisableHelmetArmor = 438,  
	---	_CPED_CONFIG_FLAG_0xCB7F3A1E = 439,  
	---	_CPED_CONFIG_FLAG_0x50178878 = 440,  
	---	CPED_CONFIG_FLAG_PreventVehExitDueToInvalidWeapon = 441,  
	---	CPED_CONFIG_FLAG_IgnoreNetSessionFriendlyFireCheckForAllowDamage = 442,  
	---	CPED_CONFIG_FLAG_DontLeaveCombatIfTargetPlayerIsAttackedByPolice = 443,  
	---	CPED_CONFIG_FLAG_CheckLockedBeforeWarp = 444,  
	---	CPED_CONFIG_FLAG_DontShuffleInVehicleToMakeRoom = 445,  
	---	CPED_CONFIG_FLAG_GiveWeaponOnGetup = 446,  
	---	CPED_CONFIG_FLAG_DontHitVehicleWithProjectiles = 447,  
	---	CPED_CONFIG_FLAG_DisableForcedEntryForOpenVehiclesFromTryLockedDoor = 448,  
	---	CPED_CONFIG_FLAG_FiresDummyRockets = 449,  
	---	CPED_CONFIG_FLAG_PedIsArresting = 450,  
	---	CPED_CONFIG_FLAG_IsDecoyPed = 451,  
	---	CPED_CONFIG_FLAG_HasEstablishedDecoy = 452,  
	---	CPED_CONFIG_FLAG_BlockDispatchedHelicoptersFromLanding = 453,  
	---	CPED_CONFIG_FLAG_DontCryForHelpOnStun = 454,  
	---	_CPED_CONFIG_FLAG_0xB68D3EAB = 455,  
	---	CPED_CONFIG_FLAG_CanBeIncapacitated = 456,  
	---	_CPED_CONFIG_FLAG_0x4BD5EBAD = 457,  
	---	CPED_CONFIG_FLAG_DontChangeTargetFromMelee = 458,  
	---};  
	SET_PED_CONFIG_FLAG = function(ped, flagId, value) invoker.call(0x1913FE4CBF41C463, ped, flagId, value) end,
	---PED::SET_PED_RESET_FLAG(PLAYER::PLAYER_PED_ID(), 240, 1);  
	---Known values:  
	---PRF_PreventGoingIntoStillInVehicleState = 236 *(fanatic2.c)*  
	SET_PED_RESET_FLAG = function(ped, flagId, doReset) invoker.call(0xC1E8A365BF3B29F2, ped, flagId, doReset) end,
	---See SET_PED_CONFIG_FLAG  
	GET_PED_CONFIG_FLAG = function(ped, flagId, p2) return invoker.call(0x7EE53118C892B513, ped, flagId, p2).bool end,
	---  
	GET_PED_RESET_FLAG = function(ped, flagId) return invoker.call(0xAF9E59B1B1FBF2A0, ped, flagId).bool end,
	---  
	SET_PED_GROUP_MEMBER_PASSENGER_INDEX = function(ped, index) invoker.call(0x0BDDB8D9EC6BCF3C, ped, index) end,
	---  
	SET_PED_CAN_EVASIVE_DIVE = function(ped, toggle) invoker.call(0x6B7A646C242A7059, ped, toggle) end,
	---Presumably returns the Entity that the Ped is currently diving out of the way of.  
	---  
	---var num3;  
	---    if (PED::IS_PED_EVASIVE_DIVING(A_0, &num3) != 0)  
	---        if (ENTITY::IS_ENTITY_A_VEHICLE(num3) != 0)  
	IS_PED_EVASIVE_DIVING = function(ped, evadingEntity) return invoker.call(0x414641C26E105898, ped, evadingEntity).bool end,
	---  
	SET_PED_SHOOTS_AT_COORD = function(ped, x, y, z, toggle) invoker.call(0x96A05E4FB321B1BA, ped, x, y, z, toggle) end,
	---Full list of peds by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/peds.json  
	SET_PED_MODEL_IS_SUPPRESSED = function(modelHash, toggle) invoker.call(0xE163A4BCE4DE6F11, modelHash, toggle) end,
	---  
	STOP_ANY_PED_MODEL_BEING_SUPPRESSED = function() invoker.call(0xB47BD05FA66B40CF) end,
	---  
	SET_PED_CAN_BE_TARGETED_WHEN_INJURED = function(ped, toggle) invoker.call(0x638C03B0F9878F57, ped, toggle) end,
	---  
	SET_PED_GENERATES_DEAD_BODY_EVENTS = function(ped, toggle) invoker.call(0x7FB17BA2E7DECA5B, ped, toggle) end,
	---  
	BLOCK_PED_FROM_GENERATING_DEAD_BODY_EVENTS_WHEN_DEAD = function(ped, toggle) invoker.call(0xE43A13C9E4CCCBCF, ped, toggle) end,
	---  
	SET_PED_WILL_ONLY_ATTACK_WANTED_PLAYER = function(p0, p1) invoker.call(0x3E9679C1DFCF422C, p0, p1) end,
	---  
	SET_PED_CAN_RAGDOLL_FROM_PLAYER_IMPACT = function(ped, toggle) invoker.call(0xDF993EE5E90ABA25, ped, toggle) end,
	---PoliceMotorcycleHelmet   1024      
	---RegularMotorcycleHelmet   4096      
	---FiremanHelmet 16384     
	---PilotHeadset  32768     
	---PilotHelmet   65536  
	-----  
	---p2 is generally 4096 or 16384 in the scripts. p1 varies between 1 and 0.  
	GIVE_PED_HELMET = function(ped, cannotRemove, helmetFlag, textureIndex) invoker.call(0x54C7C4A94367717E, ped, cannotRemove, helmetFlag, textureIndex) end,
	---  
	REMOVE_PED_HELMET = function(ped, instantly) invoker.call(0xA7B2458D0AD6DED8, ped, instantly) end,
	---  
	IS_PED_TAKING_OFF_HELMET = function(ped) return invoker.call(0x14590DDBEDB1EC85, ped).bool end,
	---  
	SET_PED_HELMET = function(ped, canWearHelmet) invoker.call(0x560A43136EB58105, ped, canWearHelmet) end,
	---  
	SET_PED_HELMET_FLAG = function(ped, helmetFlag) invoker.call(0xC0E78D5C2CE3EB25, ped, helmetFlag) end,
	---List of component/props ID  
	---gtaxscripting.blogspot.com/2016/04/gta-v-peds-component-and-props.html  
	SET_PED_HELMET_PROP_INDEX = function(ped, propIndex, p2) invoker.call(0x26D83693ED99291C, ped, propIndex, p2) end,
	---  
	SET_PED_HELMET_VISOR_PROP_INDICES = function(ped, p1, p2, p3) invoker.call(0x3F7325574E41B44D, ped, p1, p2, p3) end,
	---  
	IS_PED_HELMET_VISOR_UP = function(ped) return invoker.call(0xB9496CE47546DB2C, ped).bool end,
	---  
	SET_PED_HELMET_TEXTURE_INDEX = function(ped, textureIndex) invoker.call(0xF1550C4BD22582E2, ped, textureIndex) end,
	---Returns true if the ped passed through the parenthesis is wearing a helmet.  
	IS_PED_WEARING_HELMET = function(ped) return invoker.call(0xF33BDFE19B309B19, ped).bool end,
	---  
	CLEAR_PED_STORED_HAT_PROP = function(ped) invoker.call(0x687C0B594907D2E8, ped) end,
	---  
	GET_PED_HELMET_STORED_HAT_PROP_INDEX = function(ped) return invoker.call(0x451294E859ECC018, ped).int end,
	---  
	GET_PED_HELMET_STORED_HAT_TEX_INDEX = function(ped) return invoker.call(0x9D728C1E12BF5518, ped).int end,
	---  
	IS_CURRENT_HEAD_PROP_A_HELMET = function(p0) return invoker.call(0xF2385935BFFD4D92, p0).bool end,
	---  
	SET_PED_TO_LOAD_COVER = function(ped, toggle) invoker.call(0x332B562EEDA62399, ped, toggle) end,
	---It simply makes the said ped to cower behind cover object(wall, desk, car)  
	---  
	---Peds flee attributes must be set to not to flee, first. Else, most of the peds, will just flee from gunshot sounds or any other panic situations.  
	SET_PED_CAN_COWER_IN_COVER = function(ped, toggle) invoker.call(0xCB7553CDCEF4A735, ped, toggle) end,
	---  
	SET_PED_CAN_PEEK_IN_COVER = function(ped, toggle) invoker.call(0xC514825C507E3736, ped, toggle) end,
	---This native does absolutely nothing, just a nullsub  
	SET_PED_PLAYS_HEAD_ON_HORN_ANIM_WHEN_DIES_IN_VEHICLE = function(ped, toggle) invoker.call(0x94D94BF1A75AED3D, ped, toggle) end,
	---"IK" stands for "Inverse kinematics." I assume this has something to do with how the ped uses his legs to balance. In the scripts, the second parameter is always an int with a value of 2, 0, or sometimes 1  
	SET_PED_LEG_IK_MODE = function(ped, mode) invoker.call(0xC396F5B86FF9FEBD, ped, mode) end,
	---  
	SET_PED_MOTION_BLUR = function(ped, toggle) invoker.call(0x0A986918B102B448, ped, toggle) end,
	---  
	SET_PED_CAN_SWITCH_WEAPON = function(ped, toggle) invoker.call(0xED7F7EFE9FABF340, ped, toggle) end,
	---  
	SET_PED_DIES_INSTANTLY_IN_WATER = function(ped, toggle) invoker.call(0xEEB64139BA29A7CF, ped, toggle) end,
	---Only appears in lamar1 script.  
	SET_LADDER_CLIMB_INPUT_STATE = function(ped, p1) invoker.call(0x1A330D297AAC6BC1, ped, p1) end,
	---  
	STOP_PED_WEAPON_FIRING_WHEN_DROPPED = function(ped) invoker.call(0xC158D28142A34608, ped) end,
	---  
	SET_SCRIPTED_ANIM_SEAT_OFFSET = function(ped, p1) invoker.call(0x5917BBA32D06C230, ped, p1) end,
	---enum eCombatMovement // 0x4F456B61  
	---{  
	---	CM_Stationary,  
	---	CM_Defensive,  
	---	CM_WillAdvance,  
	---	CM_WillRetreat  
	---};  
	SET_PED_COMBAT_MOVEMENT = function(ped, combatMovement) invoker.call(0x4D9CA1009AFBD057, ped, combatMovement) end,
	---See SET_PED_COMBAT_MOVEMENT  
	GET_PED_COMBAT_MOVEMENT = function(ped) return invoker.call(0xDEA92412FCAEB3F5, ped).int end,
	---enum eCombatAbility // 0xE793438C  
	---{  
	---	CA_Poor,  
	---	CA_Average,  
	---	CA_Professional,  
	---	CA_NumTypes  
	---};  
	SET_PED_COMBAT_ABILITY = function(ped, abilityLevel) invoker.call(0xC7622C0D36B2FDA8, ped, abilityLevel) end,
	---enum eCombatRange // 0xB69160F5  
	---{  
	---	CR_Near,  
	---	CR_Medium,  
	---	CR_Far,  
	---	CR_VeryFar,  
	---	CR_NumRanges  
	---};  
	SET_PED_COMBAT_RANGE = function(ped, combatRange) invoker.call(0x3C606747B23E497B, ped, combatRange) end,
	---See SET_PED_COMBAT_RANGE  
	GET_PED_COMBAT_RANGE = function(ped) return invoker.call(0xF9D9F7F2DB8E2FA0, ped).int end,
	---enum eCombatAttributes // 0x0E8E7201  
	---{  
	---	BF_CanUseCover = 0,  
	---	BF_CanUseVehicles = 1,  
	---	BF_CanDoDrivebys = 2,  
	---	BF_CanLeaveVehicle = 3,  
	---	BF_CanUseDynamicStrafeDecisions = 4,  
	---	BF_AlwaysFight = 5,  
	---	BF_0x66BB9FCC = 6,  
	---	BF_0x6837DA41 = 7,  
	---	BF_0xB4A13A5A = 8,  
	---	BF_0xEE326AAD = 9,  
	---	BF_0x7DF2CCFA = 10,  
	---	BF_0x0036D422 = 11,  
	---	BF_BlindFireWhenInCover = 12,  
	---	BF_Aggressive = 13,  
	---	BF_CanInvestigate = 14,  
	---	BF_HasRadio = 15,  
	---	BF_0x6BDE28D1 = 16,  
	---	BF_AlwaysFlee = 17,  
	---	BF_0x7852797D = 18,  
	---	BF_0x33497B95 = 19,  
	---	BF_CanTauntInVehicle = 20,  
	---	BF_CanChaseTargetOnFoot = 21,  
	---	BF_WillDragInjuredPedsToSafety = 22,  
	---	BF_0xCD7168B8 = 23,  
	---	BF_UseProximityFiringRate = 24,  
	---	BF_0x48F914F8 = 25,  
	---	BF_0x2EA543D0 = 26,  
	---	BF_PerfectAccuracy = 27,  
	---	BF_CanUseFrustratedAdvance = 28,  
	---	BF_0x3D131AC1 = 29,  
	---	BF_0x3AD95F27 = 30,  
	---	BF_MaintainMinDistanceToTarget = 31,  
	---	BF_0xEAD68AD2 = 32,  
	---	BF_0xA206C2E0 = 33,  
	---	BF_CanUsePeekingVariations = 34,  
	---	BF_0xA5715184 = 35,  
	---	BF_0xD5265533 = 36,  
	---	BF_0x2B84C2BF = 37,  
	---	BF_DisableBulletReactions = 38,  
	---	BF_CanBust = 39,  
	---	BF_0xAA525726 = 40,  
	---	BF_CanCommandeerVehicles = 41,  
	---	BF_CanFlank = 42,  
	---	BF_SwitchToAdvanceIfCantFindCover = 43,  
	---	BF_SwitchToDefensiveIfInCover = 44,  
	---	BF_0xEB4786A0 = 45,  
	---	BF_CanFightArmedPedsWhenNotArmed = 46,  
	---	BF_0xA08E9402 = 47,  
	---	BF_0x952EAD7D = 48,  
	---	BF_UseEnemyAccuracyScaling = 49,  
	---	BF_CanCharge = 50,  
	---	BF_0xDA8C2BD3 = 51,  
	---	BF_0x6562F017 = 52,  
	---	BF_0xA2C3D53B = 53,  
	---	BF_AlwaysEquipBestWeapon = 54,  
	---	BF_CanSeeUnderwaterPeds = 55,  
	---	BF_0xF619486B = 56,  
	---	BF_0x61EB63A3 = 57,  
	---	BF_DisableFleeFromCombat = 58,  
	---	BF_0x8976D12B = 59,  
	---	BF_CanThrowSmokeGrenade = 60,  
	---	BF_NonMissionPedsFleeFromThisPedUnlessArmed = 61,  
	---	BF_0x5452A10C = 62,  
	---	BF_FleesFromInvincibleOpponents = 63,  
	---	BF_DisableBlockFromPursueDuringVehicleChase = 64,  
	---	BF_DisableSpinOutDuringVehicleChase = 65,  
	---	BF_DisableCruiseInFrontDuringBlockDuringVehicleChase = 66,  
	---	BF_0x0B404731 = 67,  
	---	BF_DisableReactToBuddyShot = 68,  
	---	BF_0x7FFD6AEB = 69,  
	---	BF_0x51F4AEF8 = 70,  
	---	BF_PermitChargeBeyondDefensiveArea = 71,  
	---	BF_0x63E0A8E2 = 72,  
	---	BF_0xDF974436 = 73,  
	---	BF_0x556C080B = 74,  
	---	BF_0xA4D50035 = 75,  
	---	BF_SetDisableShoutTargetPositionOnCombatStart = 76,  
	---	BF_DisableRespondedToThreatBroadcast = 77,  
	---	BF_0xCBB01765 = 78,  
	---	BF_0x4F862ED4 = 79,  
	---	BF_0xEF9C7C40 = 80,  
	---	BF_0xE51B494F = 81,  
	---	BF_0x054D0199 = 82,  
	---	BF_0xD36BCE94 = 83,  
	---	BF_0xFB11F690 = 84,  
	---	BF_0xD208A9AD = 85,  
	---	BF_AllowDogFighting = 86,  
	---	BF_0x07A6E531 = 87,  
	---	BF_0x34F9317B = 88,  
	---	BF_0x4240F5A9 = 89,  
	---	BF_0xEE129DBD = 90,  
	---	BF_0x053AEAD9 = 91  
	---};  
	SET_PED_COMBAT_ATTRIBUTES = function(ped, attributeId, enabled) invoker.call(0x9F7794730795E019, ped, attributeId, enabled) end,
	---enum eTargetLossResponseType  
	---{  
	---	TLR_ExitTask,  
	---	TLR_NeverLoseTarget,  
	---	TLR_SearchForTarget  
	---};  
	SET_PED_TARGET_LOSS_RESPONSE = function(ped, responseType) invoker.call(0x0703B9079823DA4A, ped, responseType) end,
	---  
	IS_PED_PERFORMING_MELEE_ACTION = function(ped) return invoker.call(0xDCCA191DF9980FD7, ped).bool end,
	---  
	IS_PED_PERFORMING_STEALTH_KILL = function(ped) return invoker.call(0xFD4CCDBCC59941B7, ped).bool end,
	---  
	IS_PED_PERFORMING_A_COUNTER_ATTACK = function(ped) return invoker.call(0xEBD0EDBA5BE957CF, ped).bool end,
	---  
	IS_PED_BEING_STEALTH_KILLED = function(ped) return invoker.call(0x863B23EFDE9C5DF2, ped).bool end,
	---  
	GET_MELEE_TARGET_FOR_PED = function(ped) return invoker.call(0x18A3E9EE1297FD39, ped).int end,
	---  
	WAS_PED_KILLED_BY_STEALTH = function(ped) return invoker.call(0xF9800AA1A771B000, ped).bool end,
	---  
	WAS_PED_KILLED_BY_TAKEDOWN = function(ped) return invoker.call(0x7F08E26039C7347C, ped).bool end,
	---  
	WAS_PED_KNOCKED_OUT = function(ped) return invoker.call(0x61767F73EACEED21, ped).bool end,
	---bit 1 (0x2) = use vehicle  
	---bit 15 (0x8000) = force cower  
	SET_PED_FLEE_ATTRIBUTES = function(ped, attributeFlags, enable) invoker.call(0x70A2D1137C8ED7C9, ped, attributeFlags, enable) end,
	---p1: Only "CODE_HUMAN_STAND_COWER" found in the b617d scripts.  
	SET_PED_COWER_HASH = function(ped, p1) invoker.call(0xA549131166868ED3, ped, p1) end,
	---  
	SET_PED_STEERS_AROUND_DEAD_BODIES = function(ped, toggle) invoker.call(0x2016C603D6B8987C, ped, toggle) end,
	---  
	SET_PED_STEERS_AROUND_PEDS = function(ped, toggle) invoker.call(0x46F2193B3AD1D891, ped, toggle) end,
	---  
	SET_PED_STEERS_AROUND_OBJECTS = function(ped, toggle) invoker.call(0x1509C089ADC208BF, ped, toggle) end,
	---  
	SET_PED_STEERS_AROUND_VEHICLES = function(ped, toggle) invoker.call(0xEB6FB9D48DDE23EC, ped, toggle) end,
	---  
	SET_PED_IS_AVOIDED_BY_OTHERS = function(p0, p1) invoker.call(0xA9B61A329BFDCBEA, p0, p1) end,
	---  
	SET_PED_INCREASED_AVOIDANCE_RADIUS = function(ped) invoker.call(0x570389D1C3DE3C6B, ped) end,
	---  
	SET_PED_BLOCKS_PATHING_WHEN_DEAD = function(ped, toggle) invoker.call(0x576594E8D64375E2, ped, toggle) end,
	---  
	SET_PED_NO_TIME_DELAY_BEFORE_SHOT = function(p0) invoker.call(0xA52D5247A4227E14, p0) end,
	---  
	IS_ANY_PED_NEAR_POINT = function(x, y, z, radius) return invoker.call(0x083961498679DC9F, x, y, z, radius).bool end,
	---  
	FORCE_PED_AI_AND_ANIMATION_UPDATE = function(ped, p1, p2) invoker.call(0x2208438012482A1A, ped, p1, p2) end,
	---  
	IS_PED_HEADING_TOWARDS_POSITION = function(ped, x, y, z, p4) return invoker.call(0xFCF37A457CB96DC0, ped, x, y, z, p4).bool end,
	---  
	REQUEST_PED_VISIBILITY_TRACKING = function(ped) invoker.call(0x7D7A2E43E74E2EB8, ped) end,
	---  
	REQUEST_PED_VEHICLE_VISIBILITY_TRACKING = function(ped, p1) invoker.call(0x2BC338A7B21F4608, ped, p1) end,
	---  
	REQUEST_PED_RESTRICTED_VEHICLE_VISIBILITY_TRACKING = function(ped, p1) invoker.call(0xCD018C591F94CB43, ped, p1) end,
	---  
	REQUEST_PED_USE_SMALL_BBOX_VISIBILITY_TRACKING = function(ped, p1) invoker.call(0x75BA1CB3B7D40CAF, ped, p1) end,
	---returns whether or not a ped is visible within your FOV, not this check auto's to false after a certain distance.  
	---  
	---  
	---Target needs to be tracked.. won't work otherwise.  
	IS_TRACKED_PED_VISIBLE = function(ped) return invoker.call(0x91C8E617F64188AC, ped).bool end,
	---  
	GET_TRACKED_PED_PIXELCOUNT = function(ped) return invoker.call(0x511F1A683387C7E2, ped).int end,
	---  
	IS_PED_TRACKED = function(ped) return invoker.call(0x4C5E1F087CD10BB7, ped).bool end,
	---  
	HAS_PED_RECEIVED_EVENT = function(ped, eventId) return invoker.call(0x8507BCB710FA6DC0, ped, eventId).bool end,
	---  
	CAN_PED_SEE_HATED_PED = function(ped1, ped2) return invoker.call(0x6CD5A433374D4CFB, ped1, ped2).bool end,
	---  
	CAN_PED_SHUFFLE_TO_OR_FROM_TURRET_SEAT = function(ped, p1) return invoker.call(0x9C6A6C19B6C0C496, ped, p1).bool end,
	---  
	CAN_PED_SHUFFLE_TO_OR_FROM_EXTRA_SEAT = function(ped, p1) return invoker.call(0x2DFC81C9B9608549, ped, p1).bool end,
	---no bone= -1  
	---  
	---boneIds:  
	---        SKEL_ROOT = 0x0,  
	---   SKEL_Pelvis = 0x2e28,  
	--- SKEL_L_Thigh = 0xe39f,  
	---    SKEL_L_Calf = 0xf9bb,  
	--- SKEL_L_Foot = 0x3779,  
	--- SKEL_L_Toe0 = 0x83c,  
	---  IK_L_Foot = 0xfedd,  
	---   PH_L_Foot = 0xe175,  
	---   MH_L_Knee = 0xb3fe,  
	---   SKEL_R_Thigh = 0xca72,  
	---    SKEL_R_Calf = 0x9000,  
	--- SKEL_R_Foot = 0xcc4d,  
	--- SKEL_R_Toe0 = 0x512d,  
	--- IK_R_Foot = 0x8aae,  
	---   PH_R_Foot = 0x60e6,  
	---   MH_R_Knee = 0x3fcf,  
	---   RB_L_ThighRoll = 0x5c57,  
	---  RB_R_ThighRoll = 0x192a,  
	---  SKEL_Spine_Root = 0xe0fd,  
	--- SKEL_Spine0 = 0x5c01,  
	--- SKEL_Spine1 = 0x60f0,  
	--- SKEL_Spine2 = 0x60f1,  
	--- SKEL_Spine3 = 0x60f2,  
	--- SKEL_L_Clavicle = 0xfcd9,  
	--- SKEL_L_UpperArm = 0xb1c5,  
	--- SKEL_L_Forearm = 0xeeeb,  
	---  SKEL_L_Hand = 0x49d9,  
	--- SKEL_L_Finger00 = 0x67f2,  
	--- SKEL_L_Finger01 = 0xff9,  
	---  SKEL_L_Finger02 = 0xffa,  
	---  SKEL_L_Finger10 = 0x67f3,  
	--- SKEL_L_Finger11 = 0x1049,  
	--- SKEL_L_Finger12 = 0x104a,  
	--- SKEL_L_Finger20 = 0x67f4,  
	--- SKEL_L_Finger21 = 0x1059,  
	--- SKEL_L_Finger22 = 0x105a,  
	--- SKEL_L_Finger30 = 0x67f5,  
	--- SKEL_L_Finger31 = 0x1029,  
	--- SKEL_L_Finger32 = 0x102a,  
	--- SKEL_L_Finger40 = 0x67f6,  
	--- SKEL_L_Finger41 = 0x1039,  
	--- SKEL_L_Finger42 = 0x103a,  
	--- PH_L_Hand = 0xeb95,  
	---   IK_L_Hand = 0x8cbd,  
	---   RB_L_ForeArmRoll = 0xee4f,  
	---    RB_L_ArmRoll = 0x1470,  
	---    MH_L_Elbow = 0x58b7,  
	---  SKEL_R_Clavicle = 0x29d2,  
	--- SKEL_R_UpperArm = 0x9d4d,  
	--- SKEL_R_Forearm = 0x6e5c,  
	---  SKEL_R_Hand = 0xdead,  
	--- SKEL_R_Finger00 = 0xe5f2,  
	--- SKEL_R_Finger01 = 0xfa10,  
	--- SKEL_R_Finger02 = 0xfa11,  
	--- SKEL_R_Finger10 = 0xe5f3,  
	--- SKEL_R_Finger11 = 0xfa60,  
	--- SKEL_R_Finger12 = 0xfa61,  
	--- SKEL_R_Finger20 = 0xe5f4,  
	--- SKEL_R_Finger21 = 0xfa70,  
	--- SKEL_R_Finger22 = 0xfa71,  
	--- SKEL_R_Finger30 = 0xe5f5,  
	--- SKEL_R_Finger31 = 0xfa40,  
	--- SKEL_R_Finger32 = 0xfa41,  
	--- SKEL_R_Finger40 = 0xe5f6,  
	--- SKEL_R_Finger41 = 0xfa50,  
	--- SKEL_R_Finger42 = 0xfa51,  
	--- PH_R_Hand = 0x6f06,  
	---   IK_R_Hand = 0x188e,  
	---   RB_R_ForeArmRoll = 0xab22,  
	---    RB_R_ArmRoll = 0x90ff,  
	---    MH_R_Elbow = 0xbb0,  
	---   SKEL_Neck_1 = 0x9995,  
	--- SKEL_Head = 0x796e,  
	---   IK_Head = 0x322c,  
	--- FACIAL_facialRoot = 0xfe2c,  
	---   FB_L_Brow_Out_000 = 0xe3db,  
	---   FB_L_Lid_Upper_000 = 0xb2b6,  
	---  FB_L_Eye_000 = 0x62ac,  
	---    FB_L_CheekBone_000 = 0x542e,  
	---  FB_L_Lip_Corner_000 = 0x74ac,  
	--- FB_R_Lid_Upper_000 = 0xaa10,  
	---  FB_R_Eye_000 = 0x6b52,  
	---    FB_R_CheekBone_000 = 0x4b88,  
	---  FB_R_Brow_Out_000 = 0x54c,  
	---    FB_R_Lip_Corner_000 = 0x2ba6,  
	--- FB_Brow_Centre_000 = 0x9149,  
	---  FB_UpperLipRoot_000 = 0x4ed2,  
	--- FB_UpperLip_000 = 0xf18f,  
	--- FB_L_Lip_Top_000 = 0x4f37,  
	---    FB_R_Lip_Top_000 = 0x4537,  
	---    FB_Jaw_000 = 0xb4a0,  
	---  FB_LowerLipRoot_000 = 0x4324,  
	--- FB_LowerLip_000 = 0x508f,  
	--- FB_L_Lip_Bot_000 = 0xb93b,  
	---    FB_R_Lip_Bot_000 = 0xc33b,  
	---    FB_Tongue_000 = 0xb987,  
	---   RB_Neck_1 = 0x8b93,  
	---   IK_Root = 0xdd1c  
	GET_PED_BONE_INDEX = function(ped, boneId) return invoker.call(0x3F428D08BE5AAE31, ped, boneId).int end,
	---  
	GET_PED_RAGDOLL_BONE_INDEX = function(ped, bone) return invoker.call(0x2057EF813397A772, ped, bone).int end,
	---Values look to be between 0.0 and 1.0  
	---From decompiled scripts: 0.0, 0.6, 0.65, 0.8, 1.0  
	---  
	---You are correct, just looked in IDA it breaks from the function if it's less than 0.0f or greater than 1.0f.  
	SET_PED_ENVEFF_SCALE = function(ped, value) invoker.call(0xBF29516833893561, ped, value) end,
	---  
	GET_PED_ENVEFF_SCALE = function(ped) return invoker.call(0x9C14D30395A51A3C, ped).float end,
	---  
	SET_ENABLE_PED_ENVEFF_SCALE = function(ped, toggle) invoker.call(0xD2C5AA0C0E8D0F1E, ped, toggle) end,
	---In agency_heist3b.c4, its like this 90% of the time:  
	---  
	---PED::SET_PED_ENVEFF_CPV_ADD(ped, 0.099);  
	---PED::SET_PED_ENVEFF_SCALE(ped, 1.0);  
	---PED::SET_PED_ENVEFF_CPV_ADD(ped, 87, 81, 68);  
	---PED::SET_ENABLE_PED_ENVEFF_SCALE(ped, 1);  
	---  
	---and its like this 10% of the time:  
	---  
	---PED::SET_PED_ENVEFF_CPV_ADD(ped, 0.2);  
	---PED::SET_PED_ENVEFF_SCALE(ped, 0.65);  
	---PED::SET_PED_ENVEFF_COLOR_MODULATOR(ped, 74, 69, 60);  
	---PED::SET_ENABLE_PED_ENVEFF_SCALE(ped, 1);  
	SET_PED_ENVEFF_CPV_ADD = function(ped, p1) invoker.call(0x110F526AB784111F, ped, p1) end,
	---Something related to the environmental effects natives.  
	---In the "agency_heist3b" script, p1 - p3 are always under 100 - usually they are {87, 81, 68}. If SET_PED_ENVEFF_SCALE is set to 0.65 (instead of the usual 1.0), they use {74, 69, 60}  
	SET_PED_ENVEFF_COLOR_MODULATOR = function(ped, p1, p2, p3) invoker.call(0xD69411AA0CEBF9E9, ped, p1, p2, p3) end,
	---intensity: 0.0f - 1.0f  
	---  
	---This native sets the emissive intensity for the given ped. It is used for different 'glow' levels on illuminated clothing.  
	SET_PED_EMISSIVE_SCALE = function(ped, intensity) invoker.call(0x4E90D746056E273D, ped, intensity) end,
	---Use 0x4E90D746056E273D to set the illuminated clothing glow intensity for a specific ped.  
	---Returns a float between 0.0 and 1.0 representing the current illuminated clothing glow intensity.  
	GET_PED_EMISSIVE_SCALE = function(ped) return invoker.call(0x1461B28A06717D68, ped).float end,
	---  
	IS_PED_SHADER_READY = function(ped) return invoker.call(0x81AA517FBBA05D39, ped).bool end,
	---  
	SET_PED_ENABLE_CREW_EMBLEM = function(ped, toggle) invoker.call(0xE906EC930F5FE7C8, ped, toggle) end,
	---This native does absolutely nothing, just a nullsub  
	REQUEST_RAGDOLL_BOUNDS_UPDATE = function(p0, p1) invoker.call(0x1216E0BFA72CC703, p0, p1) end,
	---Enable/disable ped shadow (ambient occlusion). https://gfycat.com/thankfulesteemedgecko  
	SET_PED_AO_BLOB_RENDERING = function(ped, toggle) invoker.call(0x2B5AA717A181FB4C, ped, toggle) end,
	---  
	IS_PED_SHELTERED = function(ped) return invoker.call(0xB8B52E498014F5B0, ped).bool end,
	---p6 always 2 (but it doesnt seem to matter...)  
	---  
	---roll and pitch 0  
	---yaw to Ped.rotation  
	CREATE_SYNCHRONIZED_SCENE = function(x, y, z, roll, pitch, yaw, p6) return invoker.call(0x8C18E0F9080ADD73, x, y, z, roll, pitch, yaw, p6).int end,
	---  
	CREATE_SYNCHRONIZED_SCENE_AT_MAP_OBJECT = function(x, y, z, radius, object) return invoker.call(0x62EC273D00187DCA, x, y, z, radius, object).int end,
	---Returns true if a synchronized scene is running  
	IS_SYNCHRONIZED_SCENE_RUNNING = function(sceneId) return invoker.call(0x25D39B935A038A26, sceneId).bool end,
	---  
	SET_SYNCHRONIZED_SCENE_ORIGIN = function(sceneID, x, y, z, roll, pitch, yaw, p7) invoker.call(0x6ACF6B7225801CD7, sceneID, x, y, z, roll, pitch, yaw, p7) end,
	---  
	SET_SYNCHRONIZED_SCENE_PHASE = function(sceneID, phase) invoker.call(0x734292F4F0ABF6D0, sceneID, phase) end,
	---  
	GET_SYNCHRONIZED_SCENE_PHASE = function(sceneID) return invoker.call(0xE4A310B1D7FA73CC, sceneID).float end,
	---  
	SET_SYNCHRONIZED_SCENE_RATE = function(sceneID, rate) invoker.call(0xB6C49F8A5E295A5D, sceneID, rate) end,
	---  
	GET_SYNCHRONIZED_SCENE_RATE = function(sceneID) return invoker.call(0xD80932D577274D40, sceneID).float end,
	---  
	SET_SYNCHRONIZED_SCENE_LOOPED = function(sceneID, toggle) invoker.call(0xD9A897A4C6C2974F, sceneID, toggle) end,
	---  
	IS_SYNCHRONIZED_SCENE_LOOPED = function(sceneID) return invoker.call(0x62522002E0C391BA, sceneID).bool end,
	---  
	SET_SYNCHRONIZED_SCENE_HOLD_LAST_FRAME = function(sceneID, toggle) invoker.call(0x394B9CD12435C981, sceneID, toggle) end,
	---  
	IS_SYNCHRONIZED_SCENE_HOLD_LAST_FRAME = function(sceneID) return invoker.call(0x7F2F4F13AC5257EF, sceneID).bool end,
	---  
	ATTACH_SYNCHRONIZED_SCENE_TO_ENTITY = function(sceneID, entity, boneIndex) invoker.call(0x272E4723B56A3B96, sceneID, entity, boneIndex) end,
	---  
	DETACH_SYNCHRONIZED_SCENE = function(sceneID) invoker.call(0x6D38F1F04CBB37EA, sceneID) end,
	---  
	TAKE_OWNERSHIP_OF_SYNCHRONIZED_SCENE = function(scene) invoker.call(0xCD9CC7E200A52A6F, scene) end,
	---Regarding p2, p3 and p4: Most common is 0, 0, 0); followed by 0, 1, 0); and 1, 1, 0); in R* scripts. p4 is very rarely something other than 0.  
	---  
	---enum eMotionState // 0x92A659FE  
	---{  
	---	MotionState_None = 0xEE717723,  
	---	MotionState_Idle = 0x9072A713,  
	---	MotionState_Walk = 0xD827C3DB,  
	---	MotionState_Run = 0xFFF7E7A4,  
	---	MotionState_Sprint = 0xBD8817DB,  
	---	MotionState_Crouch_Idle = 0x43FB099E,  
	---	MotionState_Crouch_Walk = 0x08C31A98,  
	---	MotionState_Crouch_Run = 0x3593CF09,  
	---	MotionState_DoNothing = 0x0EC17E58,  
	---	MotionState_AnimatedVelocity = 0x551AAC43,  
	---	MotionState_InVehicle = 0x94D9D58D,  
	---	MotionState_Aiming = 0x3F67C6AF,  
	---	MotionState_Diving_Idle = 0x4848CDED,  
	---	MotionState_Diving_Swim = 0x916E828C,  
	---	MotionState_Swimming_TreadWater = 0xD1BF11C7,  
	---	MotionState_Dead = 0x0DBB071C,  
	---	MotionState_Stealth_Idle = 0x422D7A25,  
	---	MotionState_Stealth_Walk = 0x042AB6A2,  
	---	MotionState_Stealth_Run = 0xFB0B79E1,  
	---	MotionState_Parachuting = 0xBAC0F10B,  
	---	MotionState_ActionMode_Idle = 0xDA40A0DC,  
	---	MotionState_ActionMode_Walk = 0xD2905EA7,  
	---	MotionState_ActionMode_Run = 0x31BADE14,  
	---	MotionState_Jetpack = 0x535E6A5E  
	---};  
	FORCE_PED_MOTION_STATE = function(ped, motionStateHash, p2, p3, p4) return invoker.call(0xF28965D04F570DCA, ped, motionStateHash, p2, p3, p4).bool end,
	---  
	GET_PED_CURRENT_MOVE_BLEND_RATIO = function(ped, speedX, speedY) return invoker.call(0xF60165E1D2C5370B, ped, speedX, speedY).bool end,
	---  
	SET_PED_MAX_MOVE_BLEND_RATIO = function(ped, value) invoker.call(0x433083750C5E064A, ped, value) end,
	---  
	SET_PED_MIN_MOVE_BLEND_RATIO = function(ped, value) invoker.call(0x01A898D26E2333DD, ped, value) end,
	---Min: 0.00  
	---Max: 10.00  
	---  
	---Can be used in combo with fast run cheat.  
	---  
	---When value is set to 10.00:  
	---Sprinting without fast run cheat: 66 m/s  
	---Sprinting with fast run cheat: 77 m/s  
	---  
	---Needs to be looped!  
	---  
	---Note: According to IDA for the Xbox360 xex, when they check bgt they seem to have the min to 0.0f, but the max set to 1.15f not 10.0f.  
	SET_PED_MOVE_RATE_OVERRIDE = function(ped, value) invoker.call(0x085BF80FA50A39D1, ped, value) end,
	---  
	SET_PED_MOVE_RATE_IN_WATER_OVERRIDE = function(ped, p1) invoker.call(0x0B3E35AC043707D9, ped, p1) end,
	---Checks if the specified sexiness flag is set  
	---  
	---enum eSexinessFlags  
	---{  
	--- SF_JEER_AT_HOT_PED = 0,  
	--- SF_HURRIEDFEMALES_SEXY = 1,  
	--- SF_HOT_PERSON = 2,  
	--- };  
	PED_HAS_SEXINESS_FLAG_SET = function(ped, sexinessFlag) return invoker.call(0x46B05BCAE43856B0, ped, sexinessFlag).bool end,
	---Returns size of array, passed into the second variable.  
	---  
	---See below for usage information.  
	---  
	---This function actually requires a struct, where the first value is the maximum number of elements to return.  Here is a sample of how I was able to get it to work correctly, without yet knowing the struct format.  
	---  
	---//Setup the array  
	--- const int numElements = 10;  
	---   const int arrSize = numElements * 2 + 2;  
	---  Any veh[arrSize];  
	--- //0 index is the size of the array  
	---    veh[0] = numElements;  
	---  
	---   int count = PED::GET_PED_NEARBY_VEHICLES(PLAYER::PLAYER_PED_ID(), veh);  
	---  
	--- if (veh != NULL)  
	---  {  
	---     //Simple loop to go through results  
	---       for (int i = 0; i < count; i++)  
	---        {  
	---         int offsettedID = i * 2 + 2;  
	---          //Make sure it exists  
	---         if (veh[offsettedID] != NULL && ENTITY::DOES_ENTITY_EXIST(veh[offsettedID]))  
	---          {  
	---             //Do something  
	---            }  
	---     }  
	--- }    
	GET_PED_NEARBY_VEHICLES = function(ped, sizeAndVehs) return invoker.call(0xCFF869CBFA210D82, ped, sizeAndVehs).int end,
	---sizeAndPeds - is a pointer to an array. The array is filled with peds found nearby the ped supplied to the first argument.  
	---ignore - ped type to ignore  
	---  
	---Return value is the number of peds found and added to the array passed.  
	---  
	--------------------------------------  
	---  
	---To make this work in most menu bases at least in C++ do it like so,  
	---  
	--- Formatted Example: https://pastebin.com/D8an9wwp  
	---  
	--------------------------------------  
	---  
	---Example: gtaforums.com/topic/789788-function-args-to-pedget-ped-nearby-peds/?p=1067386687  
	GET_PED_NEARBY_PEDS = function(ped, sizeAndPeds, ignore) return invoker.call(0x23F8F5FC7E8C4A6B, ped, sizeAndPeds, ignore).int end,
	---  
	HAVE_ALL_STREAMING_REQUESTS_COMPLETED = function(ped) return invoker.call(0x7350823473013C02, ped).bool end,
	---  
	IS_PED_USING_ACTION_MODE = function(ped) return invoker.call(0x00E73468D085F745, ped).bool end,
	---p2 is usually -1 in the scripts. action is either 0 or "DEFAULT_ACTION".  
	SET_PED_USING_ACTION_MODE = function(ped, p1, p2, action) invoker.call(0xD75ACCF5E0FB5367, ped, p1, p2, action) end,
	---name: "MP_FEMALE_ACTION" found multiple times in the b617d scripts.  
	SET_MOVEMENT_MODE_OVERRIDE = function(ped, name) invoker.call(0x781DE8FA214E87D2, ped, name) end,
	---Overrides the ped's collision capsule radius for the current tick.  
	---Must be called every tick to be effective.  
	---  
	---Setting this to 0.001 will allow warping through some objects.  
	SET_PED_CAPSULE = function(ped, value) invoker.call(0x364DF566EC833DE2, ped, value) end,
	---gtaforums.com/topic/885580-ped-headshotmugshot-txd/  
	REGISTER_PEDHEADSHOT = function(ped) return invoker.call(0x4462658788425076, ped).int end,
	---  
	REGISTER_PEDHEADSHOT_HIRES = function(ped) return invoker.call(0xBA8805A1108A2515, ped).int end,
	---Similar to REGISTER_PEDHEADSHOT but creates a transparent background instead of black. Example: https://i.imgur.com/iHz8ztn.png  
	REGISTER_PEDHEADSHOT_TRANSPARENT = function(ped) return invoker.call(0x953563CE563143AF, ped).int end,
	---gtaforums.com/topic/885580-ped-headshotmugshot-txd/  
	UNREGISTER_PEDHEADSHOT = function(id) invoker.call(0x96B1361D9B24C2FF, id) end,
	---gtaforums.com/topic/885580-ped-headshotmugshot-txd/  
	IS_PEDHEADSHOT_VALID = function(id) return invoker.call(0xA0A9668F158129A2, id).bool end,
	---gtaforums.com/topic/885580-ped-headshotmugshot-txd/  
	IS_PEDHEADSHOT_READY = function(id) return invoker.call(0x7085228842B13A67, id).bool end,
	---gtaforums.com/topic/885580-ped-headshotmugshot-txd/  
	GET_PEDHEADSHOT_TXD_STRING = function(id) return invoker.call(0xDB4EACD4AD0A5D6B, id).str end,
	---  
	REQUEST_PEDHEADSHOT_IMG_UPLOAD = function(id) return invoker.call(0xF0DAEF2F545BEE25, id).bool end,
	---  
	RELEASE_PEDHEADSHOT_IMG_UPLOAD = function(id) invoker.call(0x5D517B27CF6ECD04, id) end,
	---  
	IS_PEDHEADSHOT_IMG_UPLOAD_AVAILABLE = function() return invoker.call(0xEBB376779A760AA8).bool end,
	---  
	HAS_PEDHEADSHOT_IMG_UPLOAD_FAILED = function() return invoker.call(0x876928DDDFCCC9CD).bool end,
	---  
	HAS_PEDHEADSHOT_IMG_UPLOAD_SUCCEEDED = function() return invoker.call(0xE8A169E666CBC541).bool end,
	---  
	SET_PED_HEATSCALE_OVERRIDE = function(ped, heatScale) invoker.call(0xC1F6EBF9A3D55538, ped, heatScale) end,
	---  
	DISABLE_PED_HEATSCALE_OVERRIDE = function(ped) invoker.call(0x600048C60D5C2C51, ped) end,
	---  
	SPAWNPOINTS_START_SEARCH = function(p0, p1, p2, p3, p4, interiorFlags, scale, duration) invoker.call(0x2DF9038C90AD5264, p0, p1, p2, p3, p4, interiorFlags, scale, duration) end,
	---  
	SPAWNPOINTS_START_SEARCH_IN_ANGLED_AREA = function(x1, y1, z1, x2, y2, z2, width, interiorFlags, scale, duration) invoker.call(0xB2AFF10216DEFA2F, x1, y1, z1, x2, y2, z2, width, interiorFlags, scale, duration) end,
	---  
	SPAWNPOINTS_CANCEL_SEARCH = function() invoker.call(0xFEE4A5459472A9F8) end,
	---  
	SPAWNPOINTS_IS_SEARCH_ACTIVE = function() return invoker.call(0x3C67506996001F5E).bool end,
	---  
	SPAWNPOINTS_IS_SEARCH_COMPLETE = function() return invoker.call(0xA586FBEB32A53DBB).bool end,
	---  
	SPAWNPOINTS_IS_SEARCH_FAILED = function() return invoker.call(0xF445DE8DA80A1792).bool end,
	---  
	SPAWNPOINTS_GET_NUM_SEARCH_RESULTS = function() return invoker.call(0xA635C11B8C44AFC2).int end,
	---  
	SPAWNPOINTS_GET_SEARCH_RESULT = function(randomInt, x, y, z) invoker.call(0x280C7E3AC7F56E90, randomInt, x, y, z) end,
	---  
	SPAWNPOINTS_GET_SEARCH_RESULT_FLAGS = function(p0, p1) invoker.call(0xB782F8238512BAD5, p0, p1) end,
	---  
	SET_IK_TARGET = function(ped, ikIndex, entityLookAt, boneLookAt, offsetX, offsetY, offsetZ, p7, blendInDuration, blendOutDuration) invoker.call(0xC32779C16FCEECD9, ped, ikIndex, entityLookAt, boneLookAt, offsetX, offsetY, offsetZ, p7, blendInDuration, blendOutDuration) end,
	---  
	FORCE_INSTANT_LEG_IK_SETUP = function(ped) invoker.call(0xED3C76ADFA6D07C4, ped) end,
	---  
	REQUEST_ACTION_MODE_ASSET = function(asset) invoker.call(0x290E2780BB7AA598, asset) end,
	---  
	HAS_ACTION_MODE_ASSET_LOADED = function(asset) return invoker.call(0xE4B5F4BF2CB24E65, asset).bool end,
	---  
	REMOVE_ACTION_MODE_ASSET = function(asset) invoker.call(0x13E940F88470FA51, asset) end,
	---  
	REQUEST_STEALTH_MODE_ASSET = function(asset) invoker.call(0x2A0A62FCDEE16D4F, asset) end,
	---  
	HAS_STEALTH_MODE_ASSET_LOADED = function(asset) return invoker.call(0xE977FC5B08AF3441, asset).bool end,
	---  
	REMOVE_STEALTH_MODE_ASSET = function(asset) invoker.call(0x9219857D21F0E842, asset) end,
	---  
	SET_PED_LOD_MULTIPLIER = function(ped, multiplier) invoker.call(0xDC2C5C242AAC342B, ped, multiplier) end,
	---  
	SET_PED_CAN_LOSE_PROPS_ON_DAMAGE = function(ped, toggle, p2) invoker.call(0xE861D0B05C7662B8, ped, toggle, p2) end,
	---  
	SET_FORCE_FOOTSTEP_UPDATE = function(ped, toggle) invoker.call(0x129466ED55140F8D, ped, toggle) end,
	---  
	SET_FORCE_STEP_TYPE = function(ped, p1, type, p3) invoker.call(0xCB968B53FC7F916D, ped, p1, type, p3) end,
	---  
	IS_ANY_HOSTILE_PED_NEAR_POINT = function(ped, x, y, z, radius) return invoker.call(0x68772DB2B2526F9F, ped, x, y, z, radius).bool end,
	---Toggles config flag CPED_CONFIG_FLAG_CanPlayInCarIdles.  
	SET_PED_CAN_PLAY_IN_CAR_IDLES = function(ped, toggle) invoker.call(0x820E9892A77E97CD, ped, toggle) end,
	---  
	IS_TARGET_PED_IN_PERCEPTION_AREA = function(ped, targetPed, p2, p3, p4, p5) return invoker.call(0x06087579E7AA85A9, ped, targetPed, p2, p3, p4, p5).bool end,
	---Min and max are usually 100.0 and 200.0  
	SET_POP_CONTROL_SPHERE_THIS_FRAME = function(x, y, z, min, max) invoker.call(0xD8C3BE3EE94CAF2D, x, y, z, min, max) end,
	---  
	FORCE_ZERO_MASS_IN_COLLISIONS = function(ped) invoker.call(0xD33DAA36272177C4, ped) end,
	---  
	SET_DISABLE_HIGH_FALL_DEATH = function(ped, toggle) invoker.call(0x711794453CFD692B, ped, toggle) end,
	---  
	SET_PED_PHONE_PALETTE_IDX = function(p0, p1) invoker.call(0x83A169EABCDB10A2, p0, p1) end,
	---  
	SET_PED_STEER_BIAS = function(ped, value) invoker.call(0x288DF530C92DAD6F, ped, value) end,
	---  
	IS_PED_SWITCHING_WEAPON = function(Ped) return invoker.call(0x3795688A307E1EB6, Ped).bool end,
	---  
	SET_PED_TREATED_AS_FRIENDLY = function(p0, p1, p2) invoker.call(0x0F62619393661D6E, p0, p1, p2) end,
	---  
	SET_DISABLE_PED_MAP_COLLISION = function(ped) invoker.call(0xDFE68C4B787E1BFB, ped) end,
	---  
	ENABLE_MP_LIGHT = function(ped, toggle) invoker.call(0xEE2476B9EE4A094F, ped, toggle) end,
	---  
	GET_MP_LIGHT_ENABLED = function(ped) return invoker.call(0x88274C11CF0D866D, ped).bool end,
	---  
	CLEAR_COVER_POINT_FOR_PED = function(ped) invoker.call(0x637822DC2AFEEBF8, ped) end,
	---  
	SET_ALLOW_STUNT_JUMP_CAMERA = function(ped, toggle) invoker.call(0xFAB944D4D481ACCB, ped, toggle) end,
}
PHYSICS={
	---Creates a rope at the specific position, that extends in the specified direction when not attached to any entities.  
	---__  
	---  
	---Add_Rope(pos.x,pos.y,pos.z,0.0,0.0,0.0,20.0,4,20.0,1.0,0.0,false,false,false,5.0,false,NULL)  
	---  
	---When attached, Position<vector> does not matter  
	---When attached, Angle<vector> does not matter  
	---  
	---Rope Type:  
	---4 and bellow is a thick rope  
	---5 and up are small metal wires  
	---0 crashes the game  
	---  
	---Max_length - Rope is forced to this length, generally best to keep this the same as your rope length.  
	---  
	---windingSpeed - Speed the Rope is being winded, using native START_ROPE_WINDING. Set positive for winding and negative for unwinding.  
	---  
	---Rigid - If max length is zero, and this is set to false the rope will become rigid (it will force a specific distance, what ever length is, between the objects).  
	---  
	---breakable - Whether or not shooting the rope will break it.  
	---  
	---unkPtr - unknown ptr, always 0 in orig scripts  
	---__  
	---  
	---Lengths can be calculated like so:  
	---  
	---float distance = abs(x1 - x2) + abs(y1 - y2) + abs(z1 - z2); // Rope length  
	---  
	---  
	---NOTES:  
	---  
	---Rope does NOT interact with anything you attach it to, in some cases it make interact with the world AFTER it breaks (seems to occur if you set the type to -1).  
	---  
	---Rope will sometimes contract and fall to the ground like you'd expect it to, but since it doesn't interact with the world the effect is just jaring.  
	ADD_ROPE = function(x, y, z, rotX, rotY, rotZ, length, ropeType, maxLength, minLength, windingSpeed, p11, p12, rigid, p14, breakWhenShot, unkPtr) return invoker.call(0xE832D760399EB220, x, y, z, rotX, rotY, rotZ, length, ropeType, maxLength, minLength, windingSpeed, p11, p12, rigid, p14, breakWhenShot, unkPtr).int end,
	---  
	DELETE_ROPE = function(ropeId) invoker.call(0x52B4829281364649, ropeId) end,
	---  
	DELETE_CHILD_ROPE = function(ropeId) invoker.call(0xAA5D6B1888E4DB20, ropeId) end,
	---  
	DOES_ROPE_EXIST = function(ropeId) return invoker.call(0xFD5448BE3111ED96, ropeId).bool end,
	---  
	ROPE_DRAW_ENABLED = function(ropeId, p1) invoker.call(0xA1AE736541B0FCA3, ropeId, p1) end,
	---  
	ROPE_DRAW_SHADOW_ENABLED = function(ropeId, toggle) invoker.call(0xF159A63806BB5BA8, ropeId, toggle) end,
	---Rope presets can be found in the gamefiles. One example is "ropeFamily3", it is NOT a hash but rather a string.  
	LOAD_ROPE_DATA = function(ropeId, rope_preset) invoker.call(0xCBB203C04D1ABD27, ropeId, rope_preset) end,
	---  
	PIN_ROPE_VERTEX = function(ropeId, vertex, x, y, z) invoker.call(0x2B320CF14146B69A, ropeId, vertex, x, y, z) end,
	---  
	UNPIN_ROPE_VERTEX = function(ropeId, vertex) invoker.call(0x4B5AE2EEE4A8F180, ropeId, vertex) end,
	---  
	GET_ROPE_VERTEX_COUNT = function(ropeId) return invoker.call(0x3655F544CD30F0B5, ropeId).int end,
	---Attaches entity 1 to entity 2.  
	ATTACH_ENTITIES_TO_ROPE = function(ropeId, ent1, ent2, ent1_x, ent1_y, ent1_z, ent2_x, ent2_y, ent2_z, length, p10, p11, p12, p13) invoker.call(0x3D95EC8B6D940AC3, ropeId, ent1, ent2, ent1_x, ent1_y, ent1_z, ent2_x, ent2_y, ent2_z, length, p10, p11, p12, p13) end,
	---The position supplied can be anywhere, and the entity should anchor relative to that point from it's origin.  
	ATTACH_ROPE_TO_ENTITY = function(ropeId, entity, x, y, z, p5) invoker.call(0x4B490A6832559A65, ropeId, entity, x, y, z, p5) end,
	---  
	DETACH_ROPE_FROM_ENTITY = function(ropeId, entity) invoker.call(0xBCF3026912A8647D, ropeId, entity) end,
	---  
	ROPE_SET_UPDATE_PINVERTS = function(ropeId) invoker.call(0xC8D667EE52114ABA, ropeId) end,
	---  
	ROPE_SET_UPDATE_ORDER = function(ropeId, p1) invoker.call(0xDC57A637A20006ED, ropeId, p1) end,
	---  
	ROPE_SET_SMOOTH_REELIN = function(ropeId, p1) invoker.call(0x36CCB9BE67B970FD, ropeId, p1) end,
	---  
	IS_ROPE_ATTACHED_AT_BOTH_ENDS = function(ropeId) return invoker.call(0x84DE3B5FB3E666F0, ropeId).bool end,
	---  
	GET_ROPE_LAST_VERTEX_COORD = function(ropeId) return invoker.call(0x21BB0FBD3E217C2D, ropeId).scr_vec3 end,
	---  
	GET_ROPE_VERTEX_COORD = function(ropeId, vertex) return invoker.call(0xEA61CA8E80F09E4D, ropeId, vertex).scr_vec3 end,
	---  
	START_ROPE_WINDING = function(ropeId) invoker.call(0x1461C72C889E343E, ropeId) end,
	---  
	STOP_ROPE_WINDING = function(ropeId) invoker.call(0xCB2D4AB84A19AA7C, ropeId) end,
	---  
	START_ROPE_UNWINDING_FRONT = function(ropeId) invoker.call(0x538D1179EC1AA9A9, ropeId) end,
	---  
	STOP_ROPE_UNWINDING_FRONT = function(ropeId) invoker.call(0xFFF3A50779EFBBB3, ropeId) end,
	---  
	ROPE_CONVERT_TO_SIMPLE = function(ropeId) invoker.call(0x5389D48EFA2F079A, ropeId) end,
	---Loads rope textures for all ropes in the current scene.  
	ROPE_LOAD_TEXTURES = function() invoker.call(0x9B9039DBF2D258C1) end,
	---  
	ROPE_ARE_TEXTURES_LOADED = function() return invoker.call(0xF2D0E6A75CC05597).bool end,
	---Unloads rope textures for all ropes in the current scene.  
	ROPE_UNLOAD_TEXTURES = function() invoker.call(0x6CE36C35C1AC8163) end,
	---  
	DOES_SCRIPT_OWN_ROPE = function(ropeId) return invoker.call(0x271C9D3ACA5D6409, ropeId).bool end,
	---  
	ROPE_ATTACH_VIRTUAL_BOUND_GEOM = function(ropeId, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13) invoker.call(0xBC0CE682D4D05650, ropeId, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13) end,
	---  
	ROPE_CHANGE_SCRIPT_OWNER = function(p0, p1, p2) invoker.call(0xB1B6216CA2E7B55E, p0, p1, p2) end,
	---  
	ROPE_SET_REFFRAMEVELOCITY_COLLIDERORDER = function(ropeId, p1) invoker.call(0xB743F735C03D7810, ropeId, p1) end,
	---  
	ROPE_GET_DISTANCE_BETWEEN_ENDS = function(ropeId) return invoker.call(0x73040398DFF9A4A6, ropeId).float end,
	---Forces a rope to a certain length.  
	ROPE_FORCE_LENGTH = function(ropeId, length) invoker.call(0xD009F759A723DB1B, ropeId, length) end,
	---Reset a rope to a certain length.  
	ROPE_RESET_LENGTH = function(ropeId, length) invoker.call(0xC16DE94D9BEA14A0, ropeId, length) end,
	---  
	APPLY_IMPULSE_TO_CLOTH = function(posX, posY, posZ, vecX, vecY, vecZ, impulse) invoker.call(0xE37F721824571784, posX, posY, posZ, vecX, vecY, vecZ, impulse) end,
	---  
	SET_DAMPING = function(entity, vertex, value) invoker.call(0xEEA3B200A6FEB65B, entity, vertex, value) end,
	---  
	GET_DAMPING = function(entity, type) return invoker.call(0x8C520A929415BCD2, entity, type).scr_vec3 end,
	---  
	ACTIVATE_PHYSICS = function(entity) invoker.call(0x710311ADF0E20730, entity) end,
	---  
	SET_CGOFFSET = function(entity, x, y, z) invoker.call(0xD8FA3908D7B86904, entity, x, y, z) end,
	---  
	GET_CGOFFSET = function(entity) return invoker.call(0x8214A4B5A7A33612, entity).scr_vec3 end,
	---  
	SET_CG_AT_BOUNDCENTER = function(entity) invoker.call(0xBE520D9761FF811F, entity) end,
	---  
	BREAK_ENTITY_GLASS = function(entity, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10) invoker.call(0x2E648D16F6E308F3, entity, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10) end,
	---  
	GET_IS_ENTITY_A_FRAG = function(object) return invoker.call(0x0C112765300C7E1E, object).bool end,
	---  
	SET_DISABLE_BREAKING = function(object, toggle) invoker.call(0x5CEC1A84620E7D5B, object, toggle) end,
	---  
	RESET_DISABLE_BREAKING = function(object) invoker.call(0xCC6E963682533882, object) end,
	---  
	SET_DISABLE_FRAG_DAMAGE = function(object, toggle) invoker.call(0x01BA3AED21C16CFB, object, toggle) end,
	---  
	SET_USE_KINEMATIC_PHYSICS = function(entity, toggle) invoker.call(0x15F944730C832252, entity, toggle) end,
	---  
	SET_IN_STUNT_MODE = function(p0) invoker.call(0x9EBD751E5787BAF2, p0) end,
	---Related to the lower-end of a vehicles fTractionCurve, e.g., from standing starts and acceleration from low/zero speeds.  
	SET_IN_ARENA_MODE = function(toggle) invoker.call(0xAA6A6098851C396F, toggle) end,
}
PLAYER={
	---Gets the ped for a specified player index.  
	GET_PLAYER_PED = function(player) return invoker.call(0x43A66C31C68491C0, player).int end,
	---Does the same like PLAYER::GET_PLAYER_PED  
	GET_PLAYER_PED_SCRIPT_INDEX = function(player) return invoker.call(0x50FAC3A3E030A6E1, player).int end,
	---Set the model for a specific Player. Be aware that this will destroy the current Ped for the Player and create a new one, any reference to the old ped should be reset  
	---Make sure to request the model first and wait until it has loaded.  
	SET_PLAYER_MODEL = function(player, model) invoker.call(0x00A1CADD00108836, player, model) end,
	---  
	CHANGE_PLAYER_PED = function(player, ped, p2, resetDamage) invoker.call(0x048189FAC643DEEE, player, ped, p2, resetDamage) end,
	---  
	GET_PLAYER_RGB_COLOUR = function(player, r, g, b) invoker.call(0xE902EF951DCE178F, player, r, g, b) end,
	---Gets the number of players in the current session.  
	---If not multiplayer, always returns 1.  
	GET_NUMBER_OF_PLAYERS = function() return invoker.call(0x407C7F91DDB46C16).int end,
	---Gets the player's team.  
	---Does nothing in singleplayer.  
	GET_PLAYER_TEAM = function(player) return invoker.call(0x37039302F4E0A008, player).int end,
	---Set player team on deathmatch and last team standing..  
	SET_PLAYER_TEAM = function(player, team) invoker.call(0x0299FA38396A4940, player, team) end,
	---  
	GET_NUMBER_OF_PLAYERS_IN_TEAM = function(team) return invoker.call(0x1FC200409F10E6F1, team).int end,
	---  
	GET_PLAYER_NAME = function(player) return invoker.call(0x6D0DE6A7B5DA71F8, player).str end,
	---Remnant from GTA IV. Does nothing in GTA V.  
	GET_WANTED_LEVEL_RADIUS = function(player) return invoker.call(0x085DEB493BE80812, player).float end,
	---  
	GET_PLAYER_WANTED_CENTRE_POSITION = function(player) return invoker.call(0x0C92BA89F1AF26F8, player).scr_vec3 end,
	---# Predominant call signatures  
	---PLAYER::SET_PLAYER_WANTED_CENTRE_POSITION(PLAYER::PLAYER_ID(), ENTITY::GET_ENTITY_COORDS(PLAYER::PLAYER_PED_ID(), 1));  
	---  
	---# Parameter value ranges  
	---P0: PLAYER::PLAYER_ID()  
	---P1: ENTITY::GET_ENTITY_COORDS(PLAYER::PLAYER_PED_ID(), 1)  
	---P2: Not set by any call  
	SET_PLAYER_WANTED_CENTRE_POSITION = function(player, position, p2, p3) invoker.call(0x520E541A97A13354, player, position, p2, p3) end,
	---Drft  
	GET_WANTED_LEVEL_THRESHOLD = function(wantedLevel) return invoker.call(0xFDD179EAF45B556C, wantedLevel).int end,
	---Call SET_PLAYER_WANTED_LEVEL_NOW for immediate effect  
	---  
	---wantedLevel is an integer value representing 0 to 5 stars even though the game supports the 6th wanted level but no police will appear since no definitions are present for it in the game files  
	---  
	---disableNoMission-  Disables When Off Mission- appears to always be false  
	---  
	SET_PLAYER_WANTED_LEVEL = function(player, wantedLevel, disableNoMission) invoker.call(0x39FF19C64EF7DA5B, player, wantedLevel, disableNoMission) end,
	---p2 is always false in R* scripts  
	SET_PLAYER_WANTED_LEVEL_NO_DROP = function(player, wantedLevel, p2) invoker.call(0x340E61DE7F471565, player, wantedLevel, p2) end,
	---Forces any pending wanted level to be applied to the specified player immediately.  
	---  
	---Call SET_PLAYER_WANTED_LEVEL with the desired wanted level, followed by SET_PLAYER_WANTED_LEVEL_NOW.  
	---  
	---Second parameter is unknown (always false).  
	SET_PLAYER_WANTED_LEVEL_NOW = function(player, p1) invoker.call(0xE0A7D1E497FFCD6F, player, p1) end,
	---  
	ARE_PLAYER_FLASHING_STARS_ABOUT_TO_DROP = function(player) return invoker.call(0xAFAF86043E5874E9, player).bool end,
	---  
	ARE_PLAYER_STARS_GREYED_OUT = function(player) return invoker.call(0x0A6EB355EE14A2DB, player).bool end,
	---  
	IS_WANTED_AND_HAS_BEEN_SEEN_BY_COPS = function(player) return invoker.call(0x7E07C78925D5FD96, player).bool end,
	---  
	SET_DISPATCH_COPS_FOR_PLAYER = function(player, toggle) invoker.call(0xDB172424876553F4, player, toggle) end,
	---  
	IS_PLAYER_WANTED_LEVEL_GREATER = function(player, wantedLevel) return invoker.call(0x238DB2A2C23EE9EF, player, wantedLevel).bool end,
	---This executes at the same as speed as PLAYER::SET_PLAYER_WANTED_LEVEL(player, 0, false);  
	---  
	---PLAYER::GET_PLAYER_WANTED_LEVEL(player); executes in less than half the time. Which means that it's worth first checking if the wanted level needs to be cleared before clearing. However, this is mostly about good code practice and can important in other situations. The difference in time in this example is negligible.   
	CLEAR_PLAYER_WANTED_LEVEL = function(player) invoker.call(0xB302540597885499, player) end,
	---  
	IS_PLAYER_DEAD = function(player) return invoker.call(0x424D4687FA1E5652, player).bool end,
	---  
	IS_PLAYER_PRESSING_HORN = function(player) return invoker.call(0xFA1E2BF8B10598F9, player).bool end,
	---Flags:  
	---SPC_AMBIENT_SCRIPT = (1 << 1),  
	---SPC_CLEAR_TASKS = (1 << 2),  
	---SPC_REMOVE_FIRES = (1 << 3),  
	---SPC_REMOVE_EXPLOSIONS = (1 << 4),  
	---SPC_REMOVE_PROJECTILES = (1 << 5),  
	---SPC_DEACTIVATE_GADGETS = (1 << 6),  
	---SPC_REENABLE_CONTROL_ON_DEATH = (1 << 7),  
	---SPC_LEAVE_CAMERA_CONTROL_ON = (1 << 8),  
	---SPC_ALLOW_PLAYER_DAMAGE = (1 << 9),  
	---SPC_DONT_STOP_OTHER_CARS_AROUND_PLAYER = (1 << 10),  
	---SPC_PREVENT_EVERYBODY_BACKOFF = (1 << 11),  
	---SPC_ALLOW_PAD_SHAKE = (1 << 12)  
	---  
	---See: https://alloc8or.re/gta5/doc/enums/eSetPlayerControlFlag.txt  
	SET_PLAYER_CONTROL = function(player, bHasControl, flags) invoker.call(0x8D32347D6D4C40A2, player, bHasControl, flags) end,
	---  
	GET_PLAYER_WANTED_LEVEL = function(player) return invoker.call(0xE28E54788CE8F12D, player).int end,
	---  
	SET_MAX_WANTED_LEVEL = function(maxWantedLevel) invoker.call(0xAA5F02DB48D704B9, maxWantedLevel) end,
	---If toggle is set to false:  
	--- The police won't be shown on the (mini)map  
	---  
	---If toggle is set to true:  
	--- The police will be shown on the (mini)map  
	SET_POLICE_RADAR_BLIPS = function(toggle) invoker.call(0x43286D561B72B8BF, toggle) end,
	---The player will be ignored by the police if toggle is set to true  
	SET_POLICE_IGNORE_PLAYER = function(player, toggle) invoker.call(0x32C62AA929C2DA6A, player, toggle) end,
	---Checks whether the specified player has a Ped, the Ped is not dead, is not injured and is not arrested.  
	IS_PLAYER_PLAYING = function(player) return invoker.call(0x5E9564D8246B909A, player).bool end,
	---  
	SET_EVERYONE_IGNORE_PLAYER = function(player, toggle) invoker.call(0x8EEDA153AD141BA4, player, toggle) end,
	---  
	SET_ALL_RANDOM_PEDS_FLEE = function(player, toggle) invoker.call(0x056E0FE8534C2949, player, toggle) end,
	---  
	SET_ALL_RANDOM_PEDS_FLEE_THIS_FRAME = function(player) invoker.call(0x471D2FF42A94B4F2, player) end,
	---  
	SET_ALL_NEUTRAL_RANDOM_PEDS_FLEE = function(player, toggle) invoker.call(0xDE45D1A1EF45EE61, player, toggle) end,
	---- This is called after SET_ALL_RANDOM_PEDS_FLEE_THIS_FRAME  
	---  
	SET_ALL_NEUTRAL_RANDOM_PEDS_FLEE_THIS_FRAME = function(player) invoker.call(0xC3376F42B1FACCC6, player) end,
	---  
	SET_LAW_PEDS_CAN_ATTACK_NON_WANTED_PLAYER_THIS_FRAME = function(player) invoker.call(0xFAC75988A7D078D3, player) end,
	---  
	SET_IGNORE_LOW_PRIORITY_SHOCKING_EVENTS = function(player, toggle) invoker.call(0x596976B02B6B5700, player, toggle) end,
	---  
	SET_WANTED_LEVEL_MULTIPLIER = function(multiplier) invoker.call(0x020E5F00CDA207BA, multiplier) end,
	---Max value is 1.0  
	SET_WANTED_LEVEL_DIFFICULTY = function(player, difficulty) invoker.call(0x9B0BB33B04405E7A, player, difficulty) end,
	---  
	RESET_WANTED_LEVEL_DIFFICULTY = function(player) invoker.call(0xB9D0DD990DC141DD, player) end,
	---  
	GET_WANTED_LEVEL_TIME_TO_ESCAPE = function() return invoker.call(0xA72200F51875FEA4).int end,
	---  
	SET_WANTED_LEVEL_HIDDEN_ESCAPE_TIME = function(player, wantedLevel, lossTime) invoker.call(0x49B856B1360C47C7, player, wantedLevel, lossTime) end,
	---  
	RESET_WANTED_LEVEL_HIDDEN_ESCAPE_TIME = function(player) invoker.call(0x823EC8E82BA45986, player) end,
	---  
	START_FIRING_AMNESTY = function(duration) invoker.call(0xBF9BD71691857E48, duration) end,
	---PLAYER::REPORT_CRIME(PLAYER::PLAYER_ID(), 37, PLAYER::GET_WANTED_LEVEL_THRESHOLD(1));  
	---  
	---From am_armybase.ysc.c4:  
	---  
	---PLAYER::REPORT_CRIME(PLAYER::PLAYER_ID(4), 36, PLAYER::GET_WANTED_LEVEL_THRESHOLD(4));  
	---  
	--------  
	---  
	---This was taken from the GTAV.exe v1.334. The function is called sub_140592CE8. For a full decompilation of the function, see here: https://pastebin.com/09qSMsN7   
	---  
	--------  
	---crimeType:  
	---1: Firearms possession  
	---2: Person running a red light ("5-0-5")  
	---3: Reckless driver  
	---4: Speeding vehicle (a "5-10")  
	---5: Traffic violation (a "5-0-5")  
	---6: Motorcycle rider without a helmet  
	---7: Vehicle theft (a "5-0-3")  
	---8: Grand Theft Auto  
	---9: ???  
	---10: ???  
	---11: Assault on a civilian (a "2-40")  
	---12: Assault on an officer  
	---13: Assault with a deadly weapon (a "2-45")  
	---14: Officer shot (a "2-45")  
	---15: Pedestrian struck by a vehicle  
	---16: Officer struck by a vehicle  
	---17: Helicopter down (an "AC"?)  
	---18: Civilian on fire (a "2-40")  
	---19: Officer set on fire (a "10-99")  
	---20: Car on fire  
	---21: Air unit down (an "AC"?)  
	---22: An explosion (a "9-96")  
	---23: A stabbing (a "2-45") (also something else I couldn't understand)  
	---24: Officer stabbed (also something else I couldn't understand)  
	---25: Attack on a vehicle ("MDV"?)  
	---26: Damage to property  
	---27: Suspect threatening officer with a firearm  
	---28: Shots fired  
	---29: ???  
	---30: ???  
	---31: ???  
	---32: ???  
	---33: ???  
	---34: A "2-45"  
	---35: ???  
	---36: A "9-25"  
	---37: ???  
	---38: ???  
	---39: ???  
	---40: ???  
	---41: ???  
	---42: ???  
	---43: Possible disturbance  
	---44: Civilian in need of assistance  
	---45: ???  
	---46: ???  
	REPORT_CRIME = function(player, crimeType, wantedLvlThresh) invoker.call(0xE9B09589827545E7, player, crimeType, wantedLvlThresh) end,
	---crimeType: see REPORT_CRIME  
	SUPPRESS_CRIME_THIS_FRAME = function(player, crimeType) invoker.call(0x9A987297ED8BD838, player, crimeType) end,
	---This native is used in both singleplayer and multiplayer scripts.  
	---  
	---Always used like this in scripts  
	---PLAYER::UPDATE_WANTED_POSITION_THIS_FRAME(PLAYER::PLAYER_ID());  
	UPDATE_WANTED_POSITION_THIS_FRAME = function(player) invoker.call(0xBC9490CA15AEA8FB, player) end,
	---This has been found in use in the decompiled files.  
	SUPPRESS_LOSING_WANTED_LEVEL_IF_HIDDEN_THIS_FRAME = function(player) invoker.call(0x4669B3ED80F24B4E, player) end,
	---  
	ALLOW_EVASION_HUD_IF_DISABLING_HIDDEN_EVASION_THIS_FRAME = function(player, p1) invoker.call(0x2F41A3BAE005E5FA, player, p1) end,
	---This has been found in use in the decompiled files.  
	FORCE_START_HIDDEN_EVASION = function(player) invoker.call(0xAD73CE5A09E42D12, player) end,
	---  
	SUPPRESS_WITNESSES_CALLING_POLICE_THIS_FRAME = function(player) invoker.call(0x36F1B38855F2A8DF, player) end,
	---  
	REPORT_POLICE_SPOTTED_PLAYER = function(player) invoker.call(0xDC64D2C53493ED12, player) end,
	---PLAYER::SET_LAW_RESPONSE_DELAY_OVERRIDE(rPtr((&l_122) + 71)); // Found in decompilation  
	---  
	---***  
	---  
	---In "am_hold_up.ysc" used once:  
	---  
	---l_8d._f47 = MISC::GET_RANDOM_FLOAT_IN_RANGE(18.0, 28.0);  
	---PLAYER::SET_LAW_RESPONSE_DELAY_OVERRIDE((l_8d._f47));  
	SET_LAW_RESPONSE_DELAY_OVERRIDE = function(p0) invoker.call(0xB45EFF719D8427A6, p0) end,
	---  
	RESET_LAW_RESPONSE_DELAY_OVERRIDE = function() invoker.call(0x0032A6DBA562C518) end,
	---  
	CAN_PLAYER_START_MISSION = function(player) return invoker.call(0xDE7465A27D403C06, player).bool end,
	---  
	IS_PLAYER_READY_FOR_CUTSCENE = function(player) return invoker.call(0x908CBECC2CAA3690, player).bool end,
	---  
	IS_PLAYER_TARGETTING_ENTITY = function(player, entity) return invoker.call(0x7912F7FC4F6264B6, player, entity).bool end,
	---Assigns the handle of locked-on melee target to *entity that you pass it.  
	---Returns false if no entity found.  
	GET_PLAYER_TARGET_ENTITY = function(player, entity) return invoker.call(0x13EDE1A5DBF797C9, player, entity).bool end,
	---Gets a value indicating whether the specified player is currently aiming freely.  
	IS_PLAYER_FREE_AIMING = function(player) return invoker.call(0x2E397FD2ECD37C87, player).bool end,
	---Gets a value indicating whether the specified player is currently aiming freely at the specified entity.  
	IS_PLAYER_FREE_AIMING_AT_ENTITY = function(player, entity) return invoker.call(0x3C06B5C839B38F7B, player, entity).bool end,
	---Returns TRUE if it found an entity in your crosshair within range of your weapon. Assigns the handle of the target to the *entity that you pass it.  
	---Returns false if no entity found.  
	GET_ENTITY_PLAYER_IS_FREE_AIMING_AT = function(player, entity) return invoker.call(0x2975C866E6713290, player, entity).bool end,
	---Affects the range of auto aim target.  
	SET_PLAYER_LOCKON_RANGE_OVERRIDE = function(player, range) invoker.call(0x29961D490E5814FD, player, range) end,
	---Set whether this player should be able to do drive-bys.  
	---  
	---"A drive-by is when a ped is aiming/shooting from vehicle. This includes middle finger taunts. By setting this value to false I confirm the player is unable to do all that. Tested on tick."  
	---  
	SET_PLAYER_CAN_DO_DRIVE_BY = function(player, toggle) invoker.call(0x6E8834B52EC20C77, player, toggle) end,
	---Sets whether this player can be hassled by gangs.  
	SET_PLAYER_CAN_BE_HASSLED_BY_GANGS = function(player, toggle) invoker.call(0xD5E460AD7020A246, player, toggle) end,
	---Sets whether this player can take cover.  
	SET_PLAYER_CAN_USE_COVER = function(player, toggle) invoker.call(0xD465A8599DFF6814, player, toggle) end,
	---Gets the maximum wanted level the player can get.  
	---Ranges from 0 to 5.  
	GET_MAX_WANTED_LEVEL = function() return invoker.call(0x462E0DB9B137DC5F).int end,
	---  
	IS_PLAYER_TARGETTING_ANYTHING = function(player) return invoker.call(0x78CFE51896B6B8A4, player).bool end,
	---  
	SET_PLAYER_SPRINT = function(player, toggle) invoker.call(0xA01B8075D8B92DF4, player, toggle) end,
	---  
	RESET_PLAYER_STAMINA = function(player) invoker.call(0xA6F312FCCE9C1DFE, player) end,
	---  
	RESTORE_PLAYER_STAMINA = function(player, p1) invoker.call(0xA352C1B864CAFD33, player, p1) end,
	---  
	GET_PLAYER_SPRINT_STAMINA_REMAINING = function(player) return invoker.call(0x3F9F16F8E65A7ED7, player).float end,
	---  
	GET_PLAYER_SPRINT_TIME_REMAINING = function(player) return invoker.call(0x1885BC9B108B4C99, player).float end,
	---  
	GET_PLAYER_UNDERWATER_TIME_REMAINING = function(player) return invoker.call(0xA1FCF8E6AF40B731, player).float end,
	---  
	SET_PLAYER_UNDERWATER_BREATH_PERCENT_REMAINING = function(player, time) return invoker.call(0xA0D3E4F7AAFB7E78, player, time).float end,
	---Returns the group ID the player is member of.  
	GET_PLAYER_GROUP = function(player) return invoker.call(0x0D127585F77030AF, player).int end,
	---  
	GET_PLAYER_MAX_ARMOUR = function(player) return invoker.call(0x92659B4CE1863CB3, player).int end,
	---Can the player control himself, used to disable controls for player for things like a cutscene.  
	---  
	------  
	---  
	---You can't disable controls with this, use SET_PLAYER_CONTROL(...) for this.   
	IS_PLAYER_CONTROL_ON = function(player) return invoker.call(0x49C32D60007AFA47, player).bool end,
	---Returns true when the player is not able to control the cam i.e. when running a benchmark test, switching the player or viewing a cutscene.  
	---  
	---Note: I am not 100% sure if the native actually checks if the cam control is disabled but it seems promising.  
	GET_ARE_CAMERA_CONTROLS_DISABLED = function() return invoker.call(0x7C814D2FB49F40C0).bool end,
	---  
	IS_PLAYER_SCRIPT_CONTROL_ON = function(player) return invoker.call(0x8A876A65283DD7D7, player).bool end,
	---Returns TRUE if the player ('s ped) is climbing at the moment.  
	IS_PLAYER_CLIMBING = function(player) return invoker.call(0x95E8F73DC65EFB9C, player).bool end,
	---Return true while player is being arrested / busted.  
	---  
	---If atArresting is set to 1, this function will return 1 when player is being arrested (while player is putting his hand up, but still have control)  
	---  
	---If atArresting is set to 0, this function will return 1 only when the busted screen is shown.  
	IS_PLAYER_BEING_ARRESTED = function(player, atArresting) return invoker.call(0x388A47C51ABDAC8E, player, atArresting).bool end,
	---  
	RESET_PLAYER_ARREST_STATE = function(player) invoker.call(0x2D03E13C460760D6, player) end,
	---Alternative: GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID(), 1);  
	GET_PLAYERS_LAST_VEHICLE = function() return invoker.call(0xB6997A7EB3F5C8C0).int end,
	---Returns the same as PLAYER_ID and NETWORK_PLAYER_ID_TO_INT  
	GET_PLAYER_INDEX = function() return invoker.call(0xA5EDC40EF369B48D).int end,
	---Simply returns whatever is passed to it (Regardless of whether the handle is valid or not).  
	INT_TO_PLAYERINDEX = function(value) return invoker.call(0x41BD2A6B006AF756, value).int end,
	---Simply returns whatever is passed to it (Regardless of whether the handle is valid or not).  
	-----------------------------------------------------------  
	---if (NETWORK::NETWORK_IS_PARTICIPANT_ACTIVE(PLAYER::INT_TO_PARTICIPANTINDEX(i)))  
	---  
	INT_TO_PARTICIPANTINDEX = function(value) return invoker.call(0x9EC6603812C24710, value).int end,
	---  
	GET_TIME_SINCE_PLAYER_HIT_VEHICLE = function(player) return invoker.call(0x5D35ECF3A81A0EE0, player).int end,
	---  
	GET_TIME_SINCE_PLAYER_HIT_PED = function(player) return invoker.call(0xE36A25322DC35F42, player).int end,
	---  
	GET_TIME_SINCE_PLAYER_DROVE_ON_PAVEMENT = function(player) return invoker.call(0xD559D2BE9E37853B, player).int end,
	---  
	GET_TIME_SINCE_PLAYER_DROVE_AGAINST_TRAFFIC = function(player) return invoker.call(0xDB89591E290D9182, player).int end,
	---  
	IS_PLAYER_FREE_FOR_AMBIENT_TASK = function(player) return invoker.call(0xDCCFD3F106C36AB4, player).bool end,
	---This returns YOUR 'identity' as a Player type.  
	---  
	---Always returns 0 in story mode.  
	PLAYER_ID = function() return invoker.call(0x4F8644AF03D0E0D6).int end,
	---Returns current player ped  
	PLAYER_PED_ID = function() return invoker.call(0xD80958FC74E988A6).int end,
	---Does exactly the same thing as PLAYER_ID()  
	NETWORK_PLAYER_ID_TO_INT = function() return invoker.call(0xEE68096F9F37341E).int end,
	---  
	HAS_FORCE_CLEANUP_OCCURRED = function(cleanupFlags) return invoker.call(0xC968670BFACE42D9, cleanupFlags).bool end,
	---used with 1,2,8,64,128 in the scripts  
	FORCE_CLEANUP = function(cleanupFlags) invoker.call(0xBC8983F38F78ED51, cleanupFlags) end,
	---PLAYER::FORCE_CLEANUP_FOR_ALL_THREADS_WITH_THIS_NAME("pb_prostitute", 1); // Found in decompilation  
	FORCE_CLEANUP_FOR_ALL_THREADS_WITH_THIS_NAME = function(name, cleanupFlags) invoker.call(0x4C68DDDDF0097317, name, cleanupFlags) end,
	---  
	FORCE_CLEANUP_FOR_THREAD_WITH_THIS_ID = function(id, cleanupFlags) invoker.call(0xF745B37630DF176B, id, cleanupFlags) end,
	---  
	GET_CAUSE_OF_MOST_RECENT_FORCE_CLEANUP = function() return invoker.call(0x9A41CF4674A12272).int end,
	---  
	SET_PLAYER_MAY_ONLY_ENTER_THIS_VEHICLE = function(player, vehicle) invoker.call(0x8026FF78F208978A, player, vehicle) end,
	---  
	SET_PLAYER_MAY_NOT_ENTER_ANY_VEHICLE = function(player) invoker.call(0x1DE37BBF9E9CC14A, player) end,
	---1 - Welcome to Los Santos  
	---2 - A Friendship Resurrected  
	---3 - A Fair Day's Pay  
	---4 - The Moment of Truth  
	---5 - To Live or Die in Los Santos  
	---6 - Diamond Hard  
	---7 - Subversive  
	---8 - Blitzed  
	---9 - Small Town, Big Job  
	---10 - The Government Gimps  
	---11 - The Big One!  
	---12 - Solid Gold, Baby!  
	---13 - Career Criminal  
	---14 - San Andreas Sightseer  
	---15 - All's Fare in Love and War  
	---16 - TP Industries Arms Race  
	---17 - Multi-Disciplined  
	---18 - From Beyond the Stars  
	---19 - A Mystery, Solved  
	---20 - Waste Management  
	---21 - Red Mist  
	---22 - Show Off  
	---23 - Kifflom!  
	---24 - Three Man Army  
	---25 - Out of Your Depth  
	---26 - Altruist Acolyte  
	---27 - A Lot of Cheddar  
	---28 - Trading Pure Alpha  
	---29 - Pimp My Sidearm  
	---30 - Wanted: Alive Or Alive  
	---31 - Los Santos Customs  
	---32 - Close Shave  
	---33 - Off the Plane  
	---34 - Three-Bit Gangster  
	---35 - Making Moves  
	---36 - Above the Law  
	---37 - Numero Uno  
	---38 - The Midnight Club  
	---39 - Unnatural Selection  
	---40 - Backseat Driver  
	---41 - Run Like The Wind  
	---42 - Clean Sweep  
	---43 - Decorated  
	---44 - Stick Up Kid  
	---45 - Enjoy Your Stay  
	---46 - Crew Cut  
	---47 - Full Refund  
	---48 - Dialling Digits  
	---49 - American Dream  
	---50 - A New Perspective  
	---51 - Be Prepared  
	---52 - In the Name of Science  
	---53 - Dead Presidents  
	---54 - Parole Day  
	---55 - Shot Caller  
	---56 - Four Way  
	---57 - Live a Little  
	---58 - Can't Touch This  
	---59 - Mastermind  
	---60 - Vinewood Visionary  
	---61 - Majestic  
	---62 - Humans of Los Santos  
	---63 - First Time Director  
	---64 - Animal Lover  
	---65 - Ensemble Piece  
	---66 - Cult Movie  
	---67 - Location Scout  
	---68 - Method Actor  
	---69 - Cryptozoologist  
	---70 - Getting Started  
	---71 - The Data Breaches  
	---72 - The Bogdan Problem  
	---73 - The Doomsday Scenario  
	---74 - A World Worth Saving  
	---75 - Orbital Obliteration  
	---76 - Elitist  
	---77 - Masterminds  
	GIVE_ACHIEVEMENT_TO_PLAYER = function(achievementId) return invoker.call(0xBEC7076D64130195, achievementId).bool end,
	---For Steam.  
	---Does nothing and always returns false in the retail version of the game.  
	SET_ACHIEVEMENT_PROGRESS = function(achievementId, progress) return invoker.call(0xC2AFFFDABBDC2C5C, achievementId, progress).bool end,
	---For Steam.  
	---Always returns 0 in retail version of the game.  
	GET_ACHIEVEMENT_PROGRESS = function(achievementId) return invoker.call(0x1C186837D0619335, achievementId).int end,
	---See GIVE_ACHIEVEMENT_TO_PLAYER  
	HAS_ACHIEVEMENT_BEEN_PASSED = function(achievementId) return invoker.call(0x867365E111A3B6EB, achievementId).bool end,
	---Returns TRUE if the game is in online mode and FALSE if in offline mode.  
	---  
	---This is an alias for NETWORK_IS_SIGNED_ONLINE.  
	IS_PLAYER_ONLINE = function() return invoker.call(0xF25D331DC2627BBC).bool end,
	---this function is hard-coded to always return 0.  
	IS_PLAYER_LOGGING_IN_NP = function() return invoker.call(0x74556E1420867ECA).bool end,
	---Purpose of the BOOL currently unknown.  
	---Both, true and false, work  
	DISPLAY_SYSTEM_SIGNIN_UI = function(p0) invoker.call(0x94DD7888C10A979E, p0) end,
	---  
	IS_SYSTEM_UI_BEING_DISPLAYED = function() return invoker.call(0x5D511E3867C87139).bool end,
	---Simply sets you as invincible (Health will not deplete).  
	---  
	---Use 0x733A643B5B0C53C1 instead if you want Ragdoll enabled, which is equal to:  
	---*(DWORD *)(playerPedAddress + 0x188) |= (1 << 9);  
	SET_PLAYER_INVINCIBLE = function(player, toggle) invoker.call(0x239528EACDC3E7DE, player, toggle) end,
	---Returns the Player's Invincible status.  
	---  
	---This function will always return false if 0x733A643B5B0C53C1 is used to set the invincibility status. To always get the correct result, use this:  
	---  
	--- bool IsPlayerInvincible(Player player)  
	---    {  
	---     auto addr = getScriptHandleBaseAddress(GET_PLAYER_PED(player));   
	---  
	---        if (addr)  
	---     {  
	---         DWORD flag = *(DWORD *)(addr + 0x188);  
	---            return ((flag & (1 << 8)) != 0) || ((flag & (1 << 9)) != 0);  
	---      }  
	---  
	---       return false;  
	--- }  
	---  
	---  
	GET_PLAYER_INVINCIBLE = function(player) return invoker.call(0xB721981B2B939E07, player).bool end,
	---Always returns false.  
	GET_PLAYER_DEBUG_INVINCIBLE = function(player) return invoker.call(0xDCC07526B8EC45AF, player).bool end,
	---  
	SET_PLAYER_INVINCIBLE_BUT_HAS_REACTIONS = function(player, toggle) invoker.call(0x6BC97F4F4BB3C04B, player, toggle) end,
	---  
	SET_PLAYER_CAN_COLLECT_DROPPED_MONEY = function(player, p1) invoker.call(0xCAC57395B151135F, player, p1) end,
	---  
	REMOVE_PLAYER_HELMET = function(player, p2) invoker.call(0xF3AC26D3CC576528, player, p2) end,
	---  
	GIVE_PLAYER_RAGDOLL_CONTROL = function(player, toggle) invoker.call(0x3C49C870E66F0A28, player, toggle) end,
	---Example from fm_mission_controler.ysc.c4:  
	---  
	---PLAYER::SET_PLAYER_LOCKON(PLAYER::PLAYER_ID(), 1);  
	---  
	---All other decompiled scripts using this seem to be using the player id as the first parameter, so I feel the need to confirm it as so.  
	---  
	---No need to confirm it says PLAYER_ID() so it uses PLAYER_ID() lol.  
	SET_PLAYER_LOCKON = function(player, toggle) invoker.call(0x5C8B2F450EE4328E, player, toggle) end,
	---Sets your targeting mode.  
	---0 = Assisted Aim - Full  
	---1 = Assisted Aim - Partial  
	---2 = Free Aim - Assisted  
	---3 = Free Aim  
	SET_PLAYER_TARGETING_MODE = function(targetMode) invoker.call(0xB1906895227793F3, targetMode) end,
	---  
	GET_PLAYER_TARGETING_MODE = function() return invoker.call(0x875BDD898B99C8CE).int end,
	---  
	SET_PLAYER_TARGET_LEVEL = function(targetLevel) invoker.call(0x5702B917B99DB1CD, targetLevel) end,
	---Returns profile setting 237.  
	GET_IS_USING_FPS_THIRD_PERSON_COVER = function() return invoker.call(0xB9CF1F793A9F1BF1).bool end,
	---Returns profile setting 243.  
	GET_IS_USING_HOOD_CAMERA = function() return invoker.call(0xCB645E85E97EA48B).bool end,
	---  
	CLEAR_PLAYER_HAS_DAMAGED_AT_LEAST_ONE_PED = function(player) invoker.call(0xF0B67A4DE6AB5F98, player) end,
	---  
	HAS_PLAYER_DAMAGED_AT_LEAST_ONE_PED = function(player) return invoker.call(0x20CE80B0C2BF4ACC, player).bool end,
	---  
	CLEAR_PLAYER_HAS_DAMAGED_AT_LEAST_ONE_NON_ANIMAL_PED = function(player) invoker.call(0x4AACB96203D11A31, player) end,
	---  
	HAS_PLAYER_DAMAGED_AT_LEAST_ONE_NON_ANIMAL_PED = function(player) return invoker.call(0xE4B90F367BD81752, player).bool end,
	---This can be between 1.0f - 14.9f   
	---  
	---You can change the max in IDA from 15.0. I say 15.0 as the function blrs if what you input is greater than or equal to 15.0 hence why it's 14.9 max default.  
	---  
	---  
	SET_AIR_DRAG_MULTIPLIER_FOR_PLAYERS_VEHICLE = function(player, multiplier) invoker.call(0xCA7DC8329F0A1E9E, player, multiplier) end,
	---Swim speed multiplier.  
	---Multiplier goes up to 1.49  
	---  
	---Just call it one time, it is not required to be called once every tick. - Note copied from below native.  
	---  
	---Note: At least the IDA method if you change the max float multiplier from 1.5 it will change it for both this and RUN_SPRINT below. I say 1.5 as the function blrs if what you input is greater than or equal to 1.5 hence why it's 1.49 max default.  
	SET_SWIM_MULTIPLIER_FOR_PLAYER = function(player, multiplier) invoker.call(0xA91C6F0FF7D16A13, player, multiplier) end,
	---Multiplier goes up to 1.49 any value above will be completely overruled by the game and the multiplier will not take effect, this can be edited in memory however.  
	---  
	---Just call it one time, it is not required to be called once every tick.  
	---  
	---Note: At least the IDA method if you change the max float multiplier from 1.5 it will change it for both this and SWIM above. I say 1.5 as the function blrs if what you input is greater than or equal to 1.5 hence why it's 1.49 max default.  
	SET_RUN_SPRINT_MULTIPLIER_FOR_PLAYER = function(player, multiplier) invoker.call(0x6DB47AA77FD94E09, player, multiplier) end,
	---Returns the time since the character was arrested in (ms) milliseconds.  
	---  
	---example  
	---  
	---var time = Function.call<int>(Hash.GET_TIME_SINCE_LAST_ARREST();  
	---  
	---UI.DrawSubtitle(time.ToString());  
	---  
	---if player has not been arrested, the int returned will be -1.  
	GET_TIME_SINCE_LAST_ARREST = function() return invoker.call(0x5063F92F07C2A316).int end,
	---Returns the time since the character died in (ms) milliseconds.  
	---  
	---example  
	---  
	---var time = Function.call<int>(Hash.GET_TIME_SINCE_LAST_DEATH();  
	---  
	---UI.DrawSubtitle(time.ToString());  
	---  
	---if player has not died, the int returned will be -1.  
	GET_TIME_SINCE_LAST_DEATH = function() return invoker.call(0xC7034807558DDFCA).int end,
	---  
	ASSISTED_MOVEMENT_CLOSE_ROUTE = function() invoker.call(0xAEBF081FFC0A0E5E) end,
	---  
	ASSISTED_MOVEMENT_FLUSH_ROUTE = function() invoker.call(0x8621390F0CDCFE1F) end,
	---  
	SET_PLAYER_FORCED_AIM = function(player, toggle) invoker.call(0x0FEE4F80AC44A726, player, toggle) end,
	---  
	SET_PLAYER_FORCED_ZOOM = function(player, toggle) invoker.call(0x75E7D505F2B15902, player, toggle) end,
	---  
	SET_PLAYER_FORCE_SKIP_AIM_INTRO = function(player, toggle) invoker.call(0x7651BC64AE59E128, player, toggle) end,
	---Inhibits the player from using any method of combat including melee and firearms.  
	---  
	---NOTE: Only disables the firing for one frame  
	DISABLE_PLAYER_FIRING = function(player, toggle) invoker.call(0x5E6CC07646BBEAB8, player, toggle) end,
	---Used only once in R* scripts (freemode.ysc).  
	DISABLE_PLAYER_THROW_GRENADE_WHILE_USING_GUN = function() invoker.call(0xB885852C39CC265D) end,
	---  
	SET_DISABLE_AMBIENT_MELEE_MOVE = function(player, toggle) invoker.call(0x2E8AABFA40A84F8C, player, toggle) end,
	---Default is 100. Use player id and not ped id. For instance: PLAYER::SET_PLAYER_MAX_ARMOUR(PLAYER::PLAYER_ID(), 100); // main_persistent.ct4  
	SET_PLAYER_MAX_ARMOUR = function(player, value) invoker.call(0x77DFCCF5948B8C71, player, value) end,
	---p1 is always 0 in the scripts  
	SPECIAL_ABILITY_ACTIVATE = function(player, p1) invoker.call(0x821FDC827D6F4090, player, p1) end,
	---  
	SET_SPECIAL_ABILITY_MP = function(player, p1, p2) invoker.call(0xB214D570EAD7F81A, player, p1, p2) end,
	---p1 is always 0 in the scripts  
	SPECIAL_ABILITY_DEACTIVATE_MP = function(player, p1) invoker.call(0x17F7471EACA78290, player, p1) end,
	---  
	SPECIAL_ABILITY_DEACTIVATE = function(player, p1) invoker.call(0xD6A953C6D1492057, player, p1) end,
	---  
	SPECIAL_ABILITY_DEACTIVATE_FAST = function(player, p1) invoker.call(0x9CB5CE07A3968D5A, player, p1) end,
	---  
	SPECIAL_ABILITY_RESET = function(player, p1) invoker.call(0x375F0E738F861A94, player, p1) end,
	---  
	SPECIAL_ABILITY_CHARGE_ON_MISSION_FAILED = function(player, p1) invoker.call(0xC9A763D8FE87436A, player, p1) end,
	---Every occurrence of p1 & p2 were both true.  
	SPECIAL_ABILITY_CHARGE_SMALL = function(player, p1, p2, p3) invoker.call(0x2E7B9B683481687D, player, p1, p2, p3) end,
	---Only 1 match. Both p1 & p2 were true.  
	SPECIAL_ABILITY_CHARGE_MEDIUM = function(player, p1, p2, p3) invoker.call(0xF113E3AA9BC54613, player, p1, p2, p3) end,
	---2 matches. p1 was always true.  
	SPECIAL_ABILITY_CHARGE_LARGE = function(player, p1, p2, p3) invoker.call(0xF733F45FA4497D93, player, p1, p2, p3) end,
	---p1 appears to always be 1 (only comes up twice)  
	SPECIAL_ABILITY_CHARGE_CONTINUOUS = function(player, p1, p2) invoker.call(0xED481732DFF7E997, player, p1, p2) end,
	---p1 appears as 5, 10, 15, 25, or 30. p2 is always true.  
	SPECIAL_ABILITY_CHARGE_ABSOLUTE = function(player, p1, p2, p3) invoker.call(0xB7B0870EB531D08D, player, p1, p2, p3) end,
	---  
	---normalizedValue is from 0.0 - 1.0  
	---p2 is always 1  
	SPECIAL_ABILITY_CHARGE_NORMALIZED = function(player, normalizedValue, p2, p3) invoker.call(0xA0696A65F009EE18, player, normalizedValue, p2, p3) end,
	---Also known as _RECHARGE_SPECIAL_ABILITY  
	SPECIAL_ABILITY_FILL_METER = function(player, p1, p2) invoker.call(0x3DACA8DDC6FD4980, player, p1, p2) end,
	---p1 was always true.  
	SPECIAL_ABILITY_DEPLETE_METER = function(player, p1, p2) invoker.call(0x1D506DBBBC51E64B, player, p1, p2) end,
	---  
	SPECIAL_ABILITY_LOCK = function(playerModel, p1) invoker.call(0x6A09D0D590A47D13, playerModel, p1) end,
	---  
	SPECIAL_ABILITY_UNLOCK = function(playerModel, p1) invoker.call(0xF145F3BE2EFA9A3B, playerModel, p1) end,
	---  
	IS_SPECIAL_ABILITY_UNLOCKED = function(playerModel) return invoker.call(0xC6017F6A6CDFA694, playerModel).bool end,
	---  
	IS_SPECIAL_ABILITY_ACTIVE = function(player, p1) return invoker.call(0x3E5F7FC85D854E15, player, p1).bool end,
	---  
	IS_SPECIAL_ABILITY_METER_FULL = function(player, p1) return invoker.call(0x05A1FE504B7F2587, player, p1).bool end,
	---  
	ENABLE_SPECIAL_ABILITY = function(player, toggle, p2) invoker.call(0x181EC197DAEFE121, player, toggle, p2) end,
	---  
	IS_SPECIAL_ABILITY_ENABLED = function(player, p1) return invoker.call(0xB1D200FE26AEF3CB, player, p1).bool end,
	---  
	SET_SPECIAL_ABILITY_MULTIPLIER = function(multiplier) invoker.call(0xA49C426ED0CA4AB7, multiplier) end,
	---  
	UPDATE_SPECIAL_ABILITY_FROM_STAT = function(player, p1) invoker.call(0xFFEE8FA29AB9A18E, player, p1) end,
	---Appears once in "re_dealgonewrong"  
	GET_IS_PLAYER_DRIVING_ON_HIGHWAY = function(player) return invoker.call(0x5FC472C501CCADB3, player).bool end,
	---Only 1 occurrence. p1 was 2.  
	GET_IS_PLAYER_DRIVING_WRECKLESS = function(player, p1) return invoker.call(0xF10B44FD479D69F3, player, p1).bool end,
	---2 occurrences in agency_heist3a. p1 was 0.7f then 0.4f.  
	GET_IS_MOPPING_AREA_FREE_IN_FRONT_OF_PLAYER = function(player, p1) return invoker.call(0xDD2620B7B9D16FF1, player, p1).bool end,
	---`findCollisionLand`: This teleports the player to land when set to true and will not consider the Z coordinate parameter provided by you. It will automatically put the Z coordinate so that you don't fall from sky.  
	START_PLAYER_TELEPORT = function(player, x, y, z, heading, p5, findCollisionLand, p7) invoker.call(0xAD15F075A4DA0FDE, player, x, y, z, heading, p5, findCollisionLand, p7) end,
	---  
	UPDATE_PLAYER_TELEPORT = function(player) return invoker.call(0xE23D5873C2394C61, player).bool end,
	---Disables the player's teleportation  
	STOP_PLAYER_TELEPORT = function() invoker.call(0xC449EDED9D73009C) end,
	---  
	IS_PLAYER_TELEPORT_ACTIVE = function() return invoker.call(0x02B15662D7F8886F).bool end,
	---  
	GET_PLAYER_CURRENT_STEALTH_NOISE = function(player) return invoker.call(0x2F395D61F3A1F877, player).float end,
	---`regenRate`: The recharge multiplier, a value between 0.0 and 1.0.  
	---Use 1.0 to reset it back to normal  
	SET_PLAYER_HEALTH_RECHARGE_MULTIPLIER = function(player, regenRate) invoker.call(0x5DB660B38DD98A31, player, regenRate) end,
	---  
	GET_PLAYER_HEALTH_RECHARGE_MAX_PERCENT = function(player) return invoker.call(0x8BC515BAE4AAF8FF, player).float end,
	---  
	SET_PLAYER_HEALTH_RECHARGE_MAX_PERCENT = function(player, limit) invoker.call(0xC388A0F065F5BC34, player, limit) end,
	---Needs to be called every frame.  
	DISABLE_PLAYER_HEALTH_RECHARGE = function(player) invoker.call(0xBCB06442F7E52666, player) end,
	---  
	SET_PLAYER_FALL_DISTANCE_TO_TRIGGER_RAGDOLL_OVERRIDE = function(player, p1) invoker.call(0xEFD79FA81DFBA9CB, player, p1) end,
	---This modifies the damage value of your weapon. Whether it is a multiplier or base damage is unknown.   
	---  
	---Based on tests, it is unlikely to be a multiplier.  
	---  
	---modifier's min value is 0.1  
	SET_PLAYER_WEAPON_DAMAGE_MODIFIER = function(player, modifier) invoker.call(0xCE07B9F7817AADA3, player, modifier) end,
	---modifier's min value is 0.1  
	SET_PLAYER_WEAPON_DEFENSE_MODIFIER = function(player, modifier) invoker.call(0x2D83BC011CA14A3C, player, modifier) end,
	---modifier's min value is 0.1  
	SET_PLAYER_WEAPON_MINIGUN_DEFENSE_MODIFIER = function(player, modifier) invoker.call(0xBCFDE9EDE4CF27DC, player, modifier) end,
	---modifier's min value is 0.1  
	SET_PLAYER_MELEE_WEAPON_DAMAGE_MODIFIER = function(player, modifier, p2) invoker.call(0x4A3DC7ECCC321032, player, modifier, p2) end,
	---modifier's min value is 0.1  
	SET_PLAYER_MELEE_WEAPON_DEFENSE_MODIFIER = function(player, modifier) invoker.call(0xAE540335B4ABC4E2, player, modifier) end,
	---modifier's min value is 0.1  
	SET_PLAYER_VEHICLE_DAMAGE_MODIFIER = function(player, modifier) invoker.call(0xA50E117CDDF82F0C, player, modifier) end,
	---modifier's min value is 0.1  
	SET_PLAYER_VEHICLE_DEFENSE_MODIFIER = function(player, modifier) invoker.call(0x4C60E6EFDAFF2462, player, modifier) end,
	---  
	SET_PLAYER_MAX_EXPLOSIVE_DAMAGE = function(player, p1) invoker.call(0x8D768602ADEF2245, player, p1) end,
	---  
	SET_PLAYER_EXPLOSIVE_DAMAGE_MODIFIER = function(player, p1) invoker.call(0xD821056B9ACF8052, player, p1) end,
	---  
	SET_PLAYER_WEAPON_TAKEDOWN_DEFENSE_MODIFIER = function(player, p1) invoker.call(0x31E90B8873A4CD3B, player, p1) end,
	---Tints:  
	---   None = -1,  
	---    Rainbow = 0,  
	---  Red = 1,  
	---  SeasideStripes = 2,  
	---   WidowMaker = 3,  
	---   Patriot = 4,  
	---  Blue = 5,  
	--- Black = 6,  
	---    Hornet = 7,  
	---   AirFocce = 8,  
	--- Desert = 9,  
	---   Shadow = 10,  
	---  HighAltitude = 11,  
	---    Airbone = 12,  
	--- Sunrise = 13,  
	---  
	SET_PLAYER_PARACHUTE_TINT_INDEX = function(player, tintIndex) invoker.call(0xA3D0E54541D9A5E5, player, tintIndex) end,
	---Tints:  
	---  None = -1,  
	---    Rainbow = 0,  
	---  Red = 1,  
	---  SeasideStripes = 2,  
	---   WidowMaker = 3,  
	---   Patriot = 4,  
	---  Blue = 5,  
	--- Black = 6,  
	---    Hornet = 7,  
	---   AirFocce = 8,  
	--- Desert = 9,  
	---   Shadow = 10,  
	---  HighAltitude = 11,  
	---    Airbone = 12,  
	--- Sunrise = 13,  
	GET_PLAYER_PARACHUTE_TINT_INDEX = function(player, tintIndex) invoker.call(0x75D3F7A1B0D9B145, player, tintIndex) end,
	---Tints:  
	---   None = -1,  
	---    Rainbow = 0,  
	---  Red = 1,  
	---  SeasideStripes = 2,  
	---   WidowMaker = 3,  
	---   Patriot = 4,  
	---  Blue = 5,  
	--- Black = 6,  
	---    Hornet = 7,  
	---   AirFocce = 8,  
	--- Desert = 9,  
	---   Shadow = 10,  
	---  HighAltitude = 11,  
	---    Airbone = 12,  
	--- Sunrise = 13,  
	SET_PLAYER_RESERVE_PARACHUTE_TINT_INDEX = function(player, index) invoker.call(0xAF04C87F5DC1DF38, player, index) end,
	---Tints:  
	---  None = -1,  
	---    Rainbow = 0,  
	---  Red = 1,  
	---  SeasideStripes = 2,  
	---   WidowMaker = 3,  
	---   Patriot = 4,  
	---  Blue = 5,  
	--- Black = 6,  
	---    Hornet = 7,  
	---   AirFocce = 8,  
	--- Desert = 9,  
	---   Shadow = 10,  
	---  HighAltitude = 11,  
	---    Airbone = 12,  
	--- Sunrise = 13,  
	GET_PLAYER_RESERVE_PARACHUTE_TINT_INDEX = function(player, index) invoker.call(0xD5A016BC3C09CF40, player, index) end,
	---tints 0- 13  
	---0 - unkown  
	---1 - unkown  
	---2 - unkown  
	---3 - unkown  
	---4 - unkown  
	SET_PLAYER_PARACHUTE_PACK_TINT_INDEX = function(player, tintIndex) invoker.call(0x93B0FB27C9A04060, player, tintIndex) end,
	---  
	GET_PLAYER_PARACHUTE_PACK_TINT_INDEX = function(player, tintIndex) invoker.call(0x6E9C742F340CE5A2, player, tintIndex) end,
	---  
	SET_PLAYER_HAS_RESERVE_PARACHUTE = function(player) invoker.call(0x7DDAB28D31FAC363, player) end,
	---  
	GET_PLAYER_HAS_RESERVE_PARACHUTE = function(player) return invoker.call(0x5DDFE2FF727F3CA3, player).bool end,
	---  
	SET_PLAYER_CAN_LEAVE_PARACHUTE_SMOKE_TRAIL = function(player, enabled) invoker.call(0xF401B182DBA8AF53, player, enabled) end,
	---  
	SET_PLAYER_PARACHUTE_SMOKE_TRAIL_COLOR = function(player, r, g, b) invoker.call(0x8217FD371A4625CF, player, r, g, b) end,
	---  
	GET_PLAYER_PARACHUTE_SMOKE_TRAIL_COLOR = function(player, r, g, b) invoker.call(0xEF56DBABD3CD4887, player, r, g, b) end,
	---  
	SET_PLAYER_PHONE_PALETTE_IDX = function(player, idx) invoker.call(0x11D5F725F0E780E0, player, idx) end,
	---  
	SET_PLAYER_NOISE_MULTIPLIER = function(player, multiplier) invoker.call(0xDB89EF50FF25FCE9, player, multiplier) end,
	---Values around 1.0f to 2.0f used in game scripts.  
	SET_PLAYER_SNEAKING_NOISE_MULTIPLIER = function(player, multiplier) invoker.call(0xB2C1A29588A9F47C, player, multiplier) end,
	---  
	CAN_PED_HEAR_PLAYER = function(player, ped) return invoker.call(0xF297383AA91DCA29, player, ped).bool end,
	---This is to make the player walk without accepting input from INPUT.  
	---  
	---gaitType is in increments of 100s. 2000, 500, 300, 200, etc.  
	---  
	---p4 is always 1 and p5 is always 0.  
	---  
	---C# Example :  
	---  
	---Function.Call(Hash.SIMULATE_PLAYER_INPUT_GAIT, Game.Player, 1.0f, 100, 1.0f, 1, 0); //Player will go forward for 100ms  
	SIMULATE_PLAYER_INPUT_GAIT = function(player, amount, gaitType, speed, p4, p5, p6) invoker.call(0x477D5D63E63ECA5D, player, amount, gaitType, speed, p4, p5, p6) end,
	---  
	RESET_PLAYER_INPUT_GAIT = function(player) invoker.call(0x19531C47A2ABD691, player) end,
	---  
	SET_AUTO_GIVE_PARACHUTE_WHEN_ENTER_PLANE = function(player, toggle) invoker.call(0x9F343285A00B4BB6, player, toggle) end,
	---  
	SET_AUTO_GIVE_SCUBA_GEAR_WHEN_EXIT_VEHICLE = function(player, toggle) invoker.call(0xD2B315B6689D537D, player, toggle) end,
	---  
	SET_PLAYER_STEALTH_PERCEPTION_MODIFIER = function(player, value) invoker.call(0x4E9021C1FCDD507A, player, value) end,
	---  
	IS_REMOTE_PLAYER_IN_NON_CLONED_VEHICLE = function(player) return invoker.call(0x690A61A6D13583F6, player).bool end,
	---  
	INCREASE_PLAYER_JUMP_SUPPRESSION_RANGE = function(player) invoker.call(0x9EDD76E87D5D51BA, player) end,
	---  
	SET_PLAYER_SIMULATE_AIMING = function(player, toggle) invoker.call(0xC54C95DA968EC5B5, player, toggle) end,
	---  
	SET_PLAYER_CLOTH_PIN_FRAMES = function(player, p1) invoker.call(0x749FADDF97DFE930, player, p1) end,
	---Every occurrence was either 0 or 2.  
	SET_PLAYER_CLOTH_PACKAGE_INDEX = function(index) invoker.call(0x9F7BBA2EA6372500, index) end,
	---6 matches across 4 scripts. 5 occurrences were 240. The other was 255.  
	SET_PLAYER_CLOTH_LOCK_COUNTER = function(value) invoker.call(0x14D913B777DFF5DA, value) end,
	---Only 1 match. ob_sofa_michael.  
	---  
	---PLAYER::PLAYER_ATTACH_VIRTUAL_BOUND(-804.5928f, 173.1801f, 71.68436f, 0f, 0f, 0.590625f, 1f, 0.7f);1.0.335.2, 1.0.350.1/2, 1.0.372.2, 1.0.393.2, 1.0.393.4, 1.0.463.1;  
	PLAYER_ATTACH_VIRTUAL_BOUND = function(p0, p1, p2, p3, p4, p5, p6, p7) invoker.call(0xED51733DC73AED51, p0, p1, p2, p3, p4, p5, p6, p7) end,
	---1.0.335.2, 1.0.350.1/2, 1.0.372.2, 1.0.393.2, 1.0.393.4, 1.0.463.1;  
	PLAYER_DETACH_VIRTUAL_BOUND = function() invoker.call(0x1DD5897E2FA6E7C9) end,
	---  
	HAS_PLAYER_BEEN_SPOTTED_IN_STOLEN_VEHICLE = function(player) return invoker.call(0xD705740BB0A1CF4C, player).bool end,
	---Returns true if an unk value is greater than 0.0f  
	IS_PLAYER_BATTLE_AWARE = function(player) return invoker.call(0x38D28DA81E4E9BF9, player).bool end,
	---  
	GET_PLAYER_RECEIVED_BATTLE_EVENT_RECENTLY = function(player, p1, p2) return invoker.call(0xBC0753C9CA14B506, player, p1, p2).bool end,
	---Appears only 3 times in the scripts, more specifically in michael1.ysc  
	---  
	----  
	---This can be used to prevent dying if you are "out of the world"  
	EXTEND_WORLD_BOUNDARY_FOR_PLAYER = function(x, y, z) invoker.call(0x5006D96C995A5827, x, y, z) end,
	---  
	RESET_WORLD_BOUNDARY_FOR_PLAYER = function() invoker.call(0xDA1DF03D5A315F4E) end,
	---Returns true if the player is riding a train.  
	IS_PLAYER_RIDING_TRAIN = function(player) return invoker.call(0x4EC12697209F2196, player).bool end,
	---  
	HAS_PLAYER_LEFT_THE_WORLD = function(player) return invoker.call(0xD55DDFB47991A294, player).bool end,
	---  
	SET_PLAYER_LEAVE_PED_BEHIND = function(player, toggle) invoker.call(0xFF300C7649724A0B, player, toggle) end,
	---p1 was always 5.  
	---p4 was always false.  
	SET_PLAYER_PARACHUTE_VARIATION_OVERRIDE = function(player, p1, p2, p3, p4) invoker.call(0xD9284A8C0D48352C, player, p1, p2, p3, p4) end,
	---  
	CLEAR_PLAYER_PARACHUTE_VARIATION_OVERRIDE = function(player) invoker.call(0x0F4CC924CF8C7B21, player) end,
	---  
	SET_PLAYER_PARACHUTE_MODEL_OVERRIDE = function(player, model) invoker.call(0x977DB4641F6FC3DB, player, model) end,
	---  
	SET_PLAYER_RESERVE_PARACHUTE_MODEL_OVERRIDE = function(player, model) invoker.call(0x0764486AEDE748DB, player, model) end,
	---  
	GET_PLAYER_PARACHUTE_MODEL_OVERRIDE = function(player) return invoker.call(0xC219887CA3E65C41, player).int end,
	---  
	GET_PLAYER_RESERVE_PARACHUTE_MODEL_OVERRIDE = function(player) return invoker.call(0x37FAAA68DCA9D08D, player).int end,
	---  
	CLEAR_PLAYER_PARACHUTE_MODEL_OVERRIDE = function(player) invoker.call(0x8753997EB5F6EE3F, player) end,
	---  
	CLEAR_PLAYER_RESERVE_PARACHUTE_MODEL_OVERRIDE = function(player) invoker.call(0x290D248E25815AE8, player) end,
	---  
	SET_PLAYER_PARACHUTE_PACK_MODEL_OVERRIDE = function(player, model) invoker.call(0xDC80A4C2F18A2B64, player, model) end,
	---  
	CLEAR_PLAYER_PARACHUTE_PACK_MODEL_OVERRIDE = function(player) invoker.call(0x10C54E4389C12B42, player) end,
	---  
	DISABLE_PLAYER_VEHICLE_REWARDS = function(player) invoker.call(0xC142BE3BB9CE125F, player) end,
	---  
	SET_PLAYER_SPECTATED_VEHICLE_RADIO_OVERRIDE = function(p0) invoker.call(0x2F7CEB6520288061, p0) end,
	---  
	SET_PLAYER_BLUETOOTH_STATE = function(player, state) invoker.call(0x5DC40A8869C22141, player, state) end,
	---  
	IS_PLAYER_BLUETOOTH_ENABLE = function(player) return invoker.call(0x65FAEE425DE637B0, player).bool end,
	---  
	DISABLE_CAMERA_VIEW_MODE_CYCLE = function(player) invoker.call(0x5501B7A5CDB79D37, player) end,
	---  
	GET_PLAYER_FAKE_WANTED_LEVEL = function(player) return invoker.call(0x56105E599CAB0EFA, player).int end,
	---  
	SET_PLAYER_CAN_DAMAGE_PLAYER = function(player1, player2, toggle) invoker.call(0x55FCC0C390620314, player1, player2, toggle) end,
	---  
	SET_APPLY_WAYPOINT_OF_PLAYER = function(player, hudColor) invoker.call(0x2382AB11450AE7BA, player, hudColor) end,
	---  
	IS_PLAYER_VEHICLE_WEAPON_TOGGLED_TO_NON_HOMING = function(p0) return invoker.call(0x6E4361FF3E8CD7CA, p0).bool end,
	---Unsets playerPed+330 if the current weapon has certain flags.  
	SET_PLAYER_VEHICLE_WEAPON_TO_NON_HOMING = function(p0) invoker.call(0x237440E46D918649, p0) end,
	---  
	SET_PLAYER_HOMING_DISABLED_FOR_ALL_VEHICLE_WEAPONS = function(p0, p1) invoker.call(0xEE4EBDD2593BA844, p0, p1) end,
	---  
	ADD_PLAYER_TARGETABLE_ENTITY = function(player, entity) invoker.call(0x9097EB6D4BB9A12A, player, entity) end,
	---  
	REMOVE_PLAYER_TARGETABLE_ENTITY = function(player, entity) invoker.call(0x9F260BFB59ADBCA3, player, entity) end,
	---  
	SET_PLAYER_PREVIOUS_VARIATION_DATA = function(player, p1, p2, p3, p4, p5) invoker.call(0x7BAE68775557AE0B, player, p1, p2, p3, p4, p5) end,
	---Resets values set by SET_SCRIPT_FIRE_POSITION  
	REMOVE_SCRIPT_FIRE_POSITION = function() invoker.call(0x7148E0F43D11F0D9) end,
	---  
	SET_SCRIPT_FIRE_POSITION = function(coordX, coordY, coordZ) invoker.call(0x70A382ADEC069DD3, coordX, coordY, coordZ) end,
}
RECORDING={
	REPLAY_START_EVENT = function(p0) invoker.call(0x48621C9FCA3EBD28, p0) end,
	---  
	REPLAY_STOP_EVENT = function() invoker.call(0x81CBAE94390F9F89) end,
	---  
	REPLAY_CANCEL_EVENT = function() invoker.call(0x13B350B8AD0EEE10) end,
	---  
	REPLAY_RECORD_BACK_FOR_TIME = function(p0, p1, p2) invoker.call(0x293220DA1B46CEBC, p0, p1, p2) end,
	----This function appears to be deprecated/ unused. Tracing the call internally leads to a _nullsub -  
	---  
	---first one seems to be a string of a mission name, second one seems to be a bool/toggle  
	---  
	---p1 was always 0.  
	---  
	REPLAY_CHECK_FOR_EVENT_THIS_FRAME = function(missionNameLabel, p1) invoker.call(0x208784099002BC30, missionNameLabel, p1) end,
	---This disable the recording feature and has to be called every frame.  
	REPLAY_PREVENT_RECORDING_THIS_FRAME = function() invoker.call(0xEB2D525B57F42B40) end,
	---  
	REPLAY_RESET_EVENT_INFO = function() invoker.call(0xF854439EFBB3B583) end,
	---This will disable the ability to make camera changes in R* Editor.  
	REPLAY_DISABLE_CAMERA_MOVEMENT_THIS_FRAME = function() invoker.call(0xAF66DCEE6609B148) end,
	---Does nothing (it's a nullsub).  
	RECORD_GREATEST_MOMENT = function(p0, p1, p2) invoker.call(0x66972397E0757E7A, p0, p1, p2) end,
	---Starts recording a replay.  
	---If mode is 0, turns on action replay.  
	---If mode is 1, starts recording.  
	---If already recording a replay, does nothing.  
	START_REPLAY_RECORDING = function(mode) invoker.call(0xC3AC2FFF9612AC81, mode) end,
	---Stops recording and saves the recorded clip.  
	STOP_REPLAY_RECORDING = function() invoker.call(0x071A5197D6AFC8B3) end,
	---Stops recording and discards the recorded clip.  
	CANCEL_REPLAY_RECORDING = function() invoker.call(0x88BB3507ED41A240) end,
	---  
	SAVE_REPLAY_RECORDING = function() return invoker.call(0x644546EC5287471B).bool end,
	---Checks if you're recording, returns TRUE when you start recording (F1) or turn on action replay (F2)  
	---  
	---mov al, cs:g_bIsRecordingGameplay // byte_141DD0CD0 in b944  
	---retn  
	IS_REPLAY_RECORDING = function() return invoker.call(0x1897CA71995A90B4).bool end,
	---  
	IS_REPLAY_INITIALIZED = function() return invoker.call(0xDF4B952F7D381B95).bool end,
	---  
	IS_REPLAY_AVAILABLE = function() return invoker.call(0x4282E08174868BE3).bool end,
	---  
	IS_REPLAY_RECORD_SPACE_AVAILABLE = function(p0) return invoker.call(0x33D47E85B476ABCD, p0).bool end,
}
REPLAY={
	---Does nothing (it's a nullsub).  
	REGISTER_EFFECT_FOR_REPLAY_EDITOR = function(p0, p1) invoker.call(0x7E2BD3EF6C205F09, p0, p1) end,
	---Returns a bool if interior rendering is disabled, if yes, all "normal" rendered interiors are invisible  
	REPLAY_SYSTEM_HAS_REQUESTED_A_SCRIPT_CLEANUP = function() return invoker.call(0x95AB8B5C992C7B58).bool end,
	---Disables some other rendering (internal)  
	SET_SCRIPTS_HAVE_CLEANED_UP_FOR_REPLAY_SYSTEM = function() invoker.call(0x5AD3932DAEB1E5D3) end,
	---  
	SET_REPLAY_SYSTEM_PAUSED_FOR_SAVE = function(p0) invoker.call(0xE058175F8EAFE79A, p0) end,
	---Sets (almost, not sure) all Rockstar Editor values (bIsRecording etc) to 0.  
	REPLAY_CONTROL_SHUTDOWN = function() invoker.call(0x3353D13F09307691) end,
	---Please note that you will need to call DO_SCREEN_FADE_IN after exiting the Rockstar Editor when you call this.  
	ACTIVATE_ROCKSTAR_EDITOR = function(p0) invoker.call(0x49DA8145672B2725, p0) end,
}
SAVEMIGRATION={
	SAVEMIGRATION_IS_MP_ENABLED = function() return invoker.call(0x84B418E93894AC1C).bool end,
	---  
	SAVEMIGRATION_MP_REQUEST_ACCOUNTS = function() return invoker.call(0x85F41F9225D08C72).bool end,
	---  
	SAVEMIGRATION_MP_GET_ACCOUNTS_STATUS = function() return invoker.call(0xC8CB5999919EA2CA).int end,
	---  
	SAVEMIGRATION_MP_NUM_ACCOUNTS = function() return invoker.call(0x77A16200E18E0C55).int end,
	---  
	SAVEMIGRATION_MP_GET_ACCOUNT = function(p0, p1) return invoker.call(0xFCE2747EEF1D05FC, p0, p1).bool end,
	---  
	SAVEMIGRATION_MP_REQUEST_STATUS = function() return invoker.call(0xE5E9746A66359F9D).bool end,
	---  
	SAVEMIGRATION_MP_GET_STATUS = function() return invoker.call(0x690B76BD2763E068).int end,
	---  
	SAVEMIGRATION_MP_IS_PLATFORM_GENERATION = function(generation) return invoker.call(0xB2C55F521748367B, generation).bool end,
}
SCRIPT={
	REQUEST_SCRIPT = function(scriptName) invoker.call(0x6EB5F71AA68F2E8E, scriptName) end,
	---  
	SET_SCRIPT_AS_NO_LONGER_NEEDED = function(scriptName) invoker.call(0xC90D2DCACD56184C, scriptName) end,
	---Returns if a script has been loaded into the game. Used to see if a script was loaded after requesting.  
	HAS_SCRIPT_LOADED = function(scriptName) return invoker.call(0xE6CC9F3BA0FB9EF1, scriptName).bool end,
	---  
	DOES_SCRIPT_EXIST = function(scriptName) return invoker.call(0xFC04745FBE67C19A, scriptName).bool end,
	---formerly _REQUEST_STREAMED_SCRIPT  
	REQUEST_SCRIPT_WITH_NAME_HASH = function(scriptHash) invoker.call(0xD62A67D26D9653E6, scriptHash) end,
	---  
	SET_SCRIPT_WITH_NAME_HASH_AS_NO_LONGER_NEEDED = function(scriptHash) invoker.call(0xC5BC038960E9DB27, scriptHash) end,
	---  
	HAS_SCRIPT_WITH_NAME_HASH_LOADED = function(scriptHash) return invoker.call(0x5F0F0C783EB16C04, scriptHash).bool end,
	---  
	DOES_SCRIPT_WITH_NAME_HASH_EXIST = function(scriptHash) return invoker.call(0xF86AA3C56BA31381, scriptHash).bool end,
	---  
	TERMINATE_THREAD = function(threadId) invoker.call(0xC8B189ED9138BCD4, threadId) end,
	---  
	IS_THREAD_ACTIVE = function(threadId) return invoker.call(0x46E9AE36D8FA6417, threadId).bool end,
	---  
	GET_NAME_OF_SCRIPT_WITH_THIS_ID = function(threadId) return invoker.call(0x05A42BA9FC8DA96B, threadId).str end,
	---Starts a new iteration of the current threads.  
	---Call this first, then SCRIPT_THREAD_ITERATOR_GET_NEXT_THREAD_ID (0x30B4FA1C82DD4B9F)  
	SCRIPT_THREAD_ITERATOR_RESET = function() invoker.call(0xDADFADA5A20143A8) end,
	---If the function returns 0, the end of the iteration has been reached.  
	SCRIPT_THREAD_ITERATOR_GET_NEXT_THREAD_ID = function() return invoker.call(0x30B4FA1C82DD4B9F).int end,
	---  
	GET_ID_OF_THIS_THREAD = function() return invoker.call(0xC30338E8088E2E21).int end,
	---  
	TERMINATE_THIS_THREAD = function() invoker.call(0x1090044AD1DA76FA) end,
	---Gets the number of instances of the specified script is currently running.  
	---  
	---Actually returns numRefs - 1.  
	---if (program)  
	---	v3 = rage::scrProgram::GetNumRefs(program) - 1;  
	---return v3;  
	GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH = function(scriptHash) return invoker.call(0x2C83A9DA6BFFC4F9, scriptHash).int end,
	---  
	GET_THIS_SCRIPT_NAME = function() return invoker.call(0x442E0A7EDE4A738A).str end,
	---  
	GET_HASH_OF_THIS_SCRIPT_NAME = function() return invoker.call(0x8A1C8B1738FFE87E).int end,
	---eventGroup: 0 = SCRIPT_EVENT_QUEUE_AI (CEventGroupScriptAI), 1 = SCRIPT_EVENT_QUEUE_NETWORK (CEventGroupScriptNetwork)  
	GET_NUMBER_OF_EVENTS = function(eventGroup) return invoker.call(0x5F92A689A06620AA, eventGroup).int end,
	---eventGroup: 0 = SCRIPT_EVENT_QUEUE_AI (CEventGroupScriptAI), 1 = SCRIPT_EVENT_QUEUE_NETWORK (CEventGroupScriptNetwork)  
	GET_EVENT_EXISTS = function(eventGroup, eventIndex) return invoker.call(0x936E6168A9BCEDB5, eventGroup, eventIndex).bool end,
	---eventGroup: 0 = SCRIPT_EVENT_QUEUE_AI (CEventGroupScriptAI), 1 = SCRIPT_EVENT_QUEUE_NETWORK (CEventGroupScriptNetwork)  
	GET_EVENT_AT_INDEX = function(eventGroup, eventIndex) return invoker.call(0xD8F66A3A60C62153, eventGroup, eventIndex).int end,
	---eventGroup: 0 = SCRIPT_EVENT_QUEUE_AI (CEventGroupScriptAI), 1 = SCRIPT_EVENT_QUEUE_NETWORK (CEventGroupScriptNetwork)  
	---  
	---Note: eventDataSize is NOT the size in bytes, it is the size determined by the SIZE_OF operator (RAGE Script operator, not C/C++ sizeof). That is, the size in bytes divided by 8 (script variables are always 8-byte aligned!).  
	GET_EVENT_DATA = function(eventGroup, eventIndex, eventData, eventDataSize) return invoker.call(0x2902843FCD2B2D79, eventGroup, eventIndex, eventData, eventDataSize).bool end,
	---eventGroup: 0 = SCRIPT_EVENT_QUEUE_AI (CEventGroupScriptAI), 1 = SCRIPT_EVENT_QUEUE_NETWORK (CEventGroupScriptNetwork)  
	---  
	---Note: eventDataSize is NOT the size in bytes, it is the size determined by the SIZE_OF operator (RAGE Script operator, not C/C++ sizeof). That is, the size in bytes divided by 8 (script variables are always 8-byte aligned!).  
	---  
	---playerBits (also known as playersToBroadcastTo) is a bitset that indicates which players this event should be sent to. In order to send the event to specific players only, use (1 << playerIndex). Set all bits if it should be broadcast to all players.  
	TRIGGER_SCRIPT_EVENT = function(eventGroup, eventData, eventDataSize, playerBits) invoker.call(0x5AE99C571D5BBE5D, eventGroup, eventData, eventDataSize, playerBits) end,
	---  
	SHUTDOWN_LOADING_SCREEN = function() invoker.call(0x078EBE9809CCD637) end,
	---  
	SET_NO_LOADING_SCREEN = function(toggle) invoker.call(0x5262CC1995D07E09, toggle) end,
	---  
	GET_NO_LOADING_SCREEN = function() return invoker.call(0x18C1270EA7F199BC).bool end,
	---  
	SET_LOADING_SCREEN_BLANK = function() return invoker.call(0x2CAFD5254592365F).bool end,
	---  
	COMMIT_TO_LOADINGSCREEN_SELCTION = function() invoker.call(0xB1577667C3708F9B) end,
	---Returns true if bit 0 in GtaThread+0x154 is set.  
	BG_IS_EXITFLAG_SET = function() return invoker.call(0x836B62713E0534CA).bool end,
	---Sets bit 1 in GtaThread+0x154  
	BG_SET_EXITFLAG_RESPONSE = function() invoker.call(0x760910B49D2B98EA) end,
	---Hashed version of BG_START_CONTEXT.  
	BG_START_CONTEXT_HASH = function(contextHash) invoker.call(0x75B18E49607874C7, contextHash) end,
	---Hashed version of BG_END_CONTEXT.  
	BG_END_CONTEXT_HASH = function(contextHash) invoker.call(0x107E5CC7CA942BC1, contextHash) end,
	---Inserts the given context into the background scripts context map.  
	BG_START_CONTEXT = function(contextName) invoker.call(0x9D5A25BADB742ACD, contextName) end,
	---Deletes the given context from the background scripts context map.  
	BG_END_CONTEXT = function(contextName) invoker.call(0xDC2BACD920D0A0DD, contextName) end,
	---  
	BG_DOES_LAUNCH_PARAM_EXIST = function(scriptIndex, p1) return invoker.call(0x0F6F1EBBC4E1D5E6, scriptIndex, p1).bool end,
	---  
	BG_GET_LAUNCH_PARAM_VALUE = function(scriptIndex, p1) return invoker.call(0x22E21FBCFC88C149, scriptIndex, p1).int end,
	---  
	BG_GET_SCRIPT_ID_FROM_NAME_HASH = function(p0) return invoker.call(0x829CD22E043A2577, p0).int end,
	---New variant of SEND_TU_SCRIPT_EVENT that automatically initializes the event data header.  
	---See TRIGGER_SCRIPT_EVENT for more info.  
	_SEND_TU_SCRIPT_EVENT_NEW = function(eventGroup, eventData, eventDataSize, playerBits, eventType) invoker.call(0x71A6F836422FDD2B, eventGroup, eventData, eventDataSize, playerBits, eventType) end,
}
SECURITY={
	---Registers a protected variable that will be checked for modifications by the anticheat  
	REGISTER_SCRIPT_VARIABLE = function(variable) invoker.call(0x40EB1EFD921822BC, variable) end,
	---  
	UNREGISTER_SCRIPT_VARIABLE = function(variable) invoker.call(0x340A36A700E99699, variable) end,
	---  
	FORCE_CHECK_SCRIPT_VARIABLES = function() invoker.call(0x8E580AB902917360) end,
}
SHAPETEST={
	---Asynchronously starts a line-of-sight (raycast) world probe shape test.  
	---  
	---Use the handle with 0x3D87450E15D98694 or 0x65287525D951F6BE until it returns 0 or 2.  
	---  
	---p8 is a bit mask with bits 1, 2 and/or 4, relating to collider types; 4 should usually be used.  
	START_SHAPE_TEST_LOS_PROBE = function(x1, y1, z1, x2, y2, z2, flags, entity, p8) return invoker.call(0x7EE9F5D83DD4F90E, x1, y1, z1, x2, y2, z2, flags, entity, p8).int end,
	---Does the same as 0x7EE9F5D83DD4F90E, except blocking until the shape test completes.  
	START_EXPENSIVE_SYNCHRONOUS_SHAPE_TEST_LOS_PROBE = function(x1, y1, z1, x2, y2, z2, flags, entity, p8) return invoker.call(0x377906D8A31E5586, x1, y1, z1, x2, y2, z2, flags, entity, p8).int end,
	---  
	START_SHAPE_TEST_BOUNDING_BOX = function(entity, flags1, flags2) return invoker.call(0x052837721A854EC7, entity, flags1, flags2).int end,
	---  
	START_SHAPE_TEST_BOX = function(x, y, z, dimX, dimY, dimZ, rotX, rotY, rotZ, p9, flags, entity, p12) return invoker.call(0xFE466162C4401D18, x, y, z, dimX, dimY, dimZ, rotX, rotY, rotZ, p9, flags, entity, p12).int end,
	---  
	START_SHAPE_TEST_BOUND = function(entity, flags1, flags2) return invoker.call(0x37181417CE7C8900, entity, flags1, flags2).int end,
	---Raycast from point to point, where the ray has a radius.   
	---  
	---flags:  
	---vehicles=10  
	---peds =12  
	---  
	---Iterating through flags yields many ped / vehicle/ object combinations  
	---  
	---p9 = 7, but no idea what it does  
	---  
	---Entity is an entity to ignore  
	START_SHAPE_TEST_CAPSULE = function(x1, y1, z1, x2, y2, z2, radius, flags, entity, p9) return invoker.call(0x28579D1B8F8AAC80, x1, y1, z1, x2, y2, z2, radius, flags, entity, p9).int end,
	---  
	START_SHAPE_TEST_SWEPT_SPHERE = function(x1, y1, z1, x2, y2, z2, radius, flags, entity, p9) return invoker.call(0xE6AC6C45FBE83004, x1, y1, z1, x2, y2, z2, radius, flags, entity, p9).int end,
	---Returns a ShapeTest handle that can be used with GET_SHAPE_TEST_RESULT.  
	---  
	---In its only usage in game scripts its called with flag set to 511, entity to player_ped_id and flag2 set to 7  
	START_SHAPE_TEST_MOUSE_CURSOR_LOS_PROBE = function(pVec1, pVec2, flag, entity, flag2) return invoker.call(0xFF6BE494C7987F34, pVec1, pVec2, flag, entity, flag2).int end,
	---Returns the result of a shape test: 0 if the handle is invalid, 1 if the shape test is still pending, or 2 if the shape test has completed, and the handle should be invalidated.  
	---  
	---When used with an asynchronous shape test, this native should be looped until returning 0 or 2, after which the handle is invalidated.  
	GET_SHAPE_TEST_RESULT = function(shapeTestHandle, hit, endCoords, surfaceNormal, entityHit) return invoker.call(0x3D87450E15D98694, shapeTestHandle, hit, endCoords, surfaceNormal, entityHit).int end,
	---Returns the result of a shape test, also returning the material of any touched surface.  
	---  
	---When used with an asynchronous shape test, this native should be looped until returning 0 or 2, after which the handle is invalidated.  
	---  
	---Unless the return value is 2, the other return values are undefined.  
	GET_SHAPE_TEST_RESULT_INCLUDING_MATERIAL = function(shapeTestHandle, hit, endCoords, surfaceNormal, materialHash, entityHit) return invoker.call(0x65287525D951F6BE, shapeTestHandle, hit, endCoords, surfaceNormal, materialHash, entityHit).int end,
	---Invalidates the entity handle passed by removing the fwScriptGuid from the entity. This should be used when receiving an ambient entity from shape testing natives, but can also be used for other natives returning an 'irrelevant' entity handle.  
	RELEASE_SCRIPT_GUID_FROM_ENTITY = function(entityHit) invoker.call(0x2B3334BCA57CD799, entityHit) end,
}
SOCIALCLUB={
	SC_INBOX_GET_TOTAL_NUM_MESSAGES = function() return invoker.call(0x03A93FF1A2CA0864).int end,
	---  
	SC_INBOX_GET_MESSAGE_TYPE_AT_INDEX = function(msgIndex) return invoker.call(0xBB8EA16ECBC976C4, msgIndex).int end,
	---  
	SC_INBOX_GET_MESSAGE_IS_READ_AT_INDEX = function(msgIndex) return invoker.call(0x93028F1DB42BFD08, msgIndex).bool end,
	---  
	SC_INBOX_SET_MESSAGE_AS_READ_AT_INDEX = function(msgIndex) return invoker.call(0x2C015348CF19CA1D, msgIndex).bool end,
	---  
	SC_INBOX_MESSAGE_GET_DATA_INT = function(p0, context, out) return invoker.call(0xA00EFE4082C4056E, p0, context, out).bool end,
	---  
	SC_INBOX_MESSAGE_GET_DATA_BOOL = function(p0, p1) return invoker.call(0xFFE5C16F402D851D, p0, p1).bool end,
	---  
	SC_INBOX_MESSAGE_GET_DATA_STRING = function(p0, context, out) return invoker.call(0x7572EF42FC6A9B6D, p0, context, out).bool end,
	---  
	SC_INBOX_MESSAGE_DO_APPLY = function(p0) return invoker.call(0x9A2C8064B6C1E41A, p0).bool end,
	---  
	SC_INBOX_MESSAGE_GET_RAW_TYPE_AT_INDEX = function(p0) return invoker.call(0xF3E31D16CBDCB304, p0).str end,
	---  
	SC_INBOX_MESSAGE_PUSH_GAMER_T0_RECIP_LIST = function(gamerHandle) invoker.call(0xDA024BDBD600F44A, gamerHandle) end,
	---  
	SC_INBOX_SEND_UGCSTATUPDATE_TO_RECIP_LIST = function(data) invoker.call(0xA68D3D229F4F3B06, data) end,
	---  
	SC_INBOX_MESSAGE_GET_UGCDATA = function(p0, p1) return invoker.call(0x69D82604A1A5A254, p0, p1).bool end,
	---  
	SC_INBOX_GET_BOUNTY_DATA_AT_INDEX = function(index, outData) return invoker.call(0x87E0052F08BD64E6, index, outData).bool end,
	---  
	SC_EMAIL_RETRIEVE_EMAILS = function(offset, limit) invoker.call(0x040ADDCBAFA1018A, offset, limit) end,
	---  
	SC_EMAIL_GET_RETRIEVAL_STATUS = function() return invoker.call(0x16DA8172459434AA).int end,
	---  
	SC_EMAIL_GET_NUM_RETRIEVED_EMAILS = function() return invoker.call(0x7DB18CA8CAD5B098).int end,
	---  
	SC_EMAIL_GET_EMAIL_AT_INDEX = function(p0, p1) return invoker.call(0x4737980E8A283806, p0, p1).bool end,
	---  
	_SC_EMAIL_MARKETING_EMAIL_OPENED = function(index, type) invoker.call(0x69AA35F3F391CDBA, index, type) end,
	---  
	SC_EMAIL_DELETE_EMAILS = function(p0, p1) invoker.call(0x44ACA259D67651DB, p0, p1) end,
	---  
	SC_EMAIL_MESSAGE_PUSH_GAMER_TO_RECIP_LIST = function(gamerHandle) invoker.call(0x2330C12A7A605D16, gamerHandle) end,
	---  
	SC_EMAIL_MESSAGE_CLEAR_RECIP_LIST = function() invoker.call(0x55DF6DB45179236E) end,
	---  
	SC_EMAIL_SEND_EMAIL = function(p0) invoker.call(0x116FB94DC4B79F17, p0) end,
	---  
	SC_EMAIL_SET_CURRENT_EMAIL_TAG = function(p0) return invoker.call(0x07DBD622D9533857, p0).bool end,
	---  
	SC_CACHE_NEW_ROCKSTAR_MSGS = function(toggle) invoker.call(0xBFA0A56A817C6C7D, toggle) end,
	---  
	SC_HAS_NEW_ROCKSTAR_MSG = function() return invoker.call(0xBC1CC91205EC8D6E).bool end,
	---  
	SC_GET_NEW_ROCKSTAR_MSG = function() return invoker.call(0xDF649C4E9AFDD788).str end,
	---  
	SC_PRESENCE_ATTR_SET_INT = function(attrHash, value) return invoker.call(0x1F1E9682483697C7, attrHash, value).bool end,
	---  
	SC_PRESENCE_ATTR_SET_FLOAT = function(attrHash, value) return invoker.call(0xC4C4575F62534A24, attrHash, value).bool end,
	---  
	SC_PRESENCE_ATTR_SET_STRING = function(attrHash, value) return invoker.call(0x287F1F75D2803595, attrHash, value).bool end,
	---  
	SC_PRESENCE_SET_ACTIVITY_RATING = function(p0, p1) return invoker.call(0x487912FD248EFDDF, p0, p1).bool end,
	---  
	SC_GAMERDATA_GET_INT = function(name, value) return invoker.call(0xC85A7127E7AD02AA, name, value).bool end,
	---  
	SC_GAMERDATA_GET_FLOAT = function(name, value) return invoker.call(0xA770C8EEC6FB2AC5, name, value).bool end,
	---  
	SC_GAMERDATA_GET_BOOL = function(name) return invoker.call(0x8416FE4E4629D7D7, name).bool end,
	---  
	SC_GAMERDATA_GET_STRING = function(name, value) return invoker.call(0x7FFCBFEE44ECFABF, name, value).bool end,
	---  
	SC_GAMERDATA_GET_ACTIVE_XP_BONUS = function(value) return invoker.call(0x2D874D4AE612A65F, value).bool end,
	---Starts a task to check an entered string for profanity on the ROS/Social Club services.  
	---  
	---See also: 1753344C770358AE, 82E4A58BABC15AE7.  
	SC_PROFANITY_CHECK_STRING = function(string, token) return invoker.call(0x75632C5ECD7ED843, string, token).bool end,
	---  
	SC_PROFANITY_CHECK_STRING_UGC = function(string, token) return invoker.call(0xEB2BF817463DFA28, string, token).bool end,
	---  
	SC_PROFANITY_GET_CHECK_IS_VALID = function(token) return invoker.call(0x1753344C770358AE, token).bool end,
	---  
	SC_PROFANITY_GET_CHECK_IS_PENDING = function(token) return invoker.call(0x82E4A58BABC15AE7, token).bool end,
	---  
	SC_PROFANITY_GET_STRING_PASSED = function(token) return invoker.call(0x85535ACF97FC0969, token).bool end,
	---  
	SC_PROFANITY_GET_STRING_STATUS = function(token) return invoker.call(0x930DE22F07B1CCE3, token).int end,
	---Retrieves the profane part of the string with max size of 128.  
	---Returns true if profane term was retrieved.  
	SC_PROFANITY_GET_PROFANE_WORD = function(token, outProfaneWord) return invoker.call(0x75CC8931A11128C9, token, outProfaneWord).bool end,
	---  
	SC_LICENSEPLATE_CHECK_STRING = function(p0, p1) return invoker.call(0xF6BAAAF762E1BF40, p0, p1).bool end,
	---  
	SC_LICENSEPLATE_GET_CHECK_IS_VALID = function(p0) return invoker.call(0xF22CA0FD74B80E7A, p0).bool end,
	---  
	SC_LICENSEPLATE_GET_CHECK_IS_PENDING = function(p0) return invoker.call(0x9237E334F6E43156, p0).bool end,
	---  
	SC_LICENSEPLATE_GET_COUNT = function(token) return invoker.call(0x700569DBA175A77C, token).int end,
	---  
	SC_LICENSEPLATE_GET_PLATE = function(token, plateIndex) return invoker.call(0x1D4446A62D35B0D0, token, plateIndex).str end,
	---  
	SC_LICENSEPLATE_GET_PLATE_DATA = function(token, plateIndex) return invoker.call(0x2E89990DDFF670C3, token, plateIndex).str end,
	---  
	SC_LICENSEPLATE_SET_PLATE_DATA = function(oldPlateText, newPlateText, plateData) return invoker.call(0xD0EE05FE193646EA, oldPlateText, newPlateText, plateData).bool end,
	---  
	SC_LICENSEPLATE_ADD = function(plateText, plateData, token) return invoker.call(0x1989C6E6F67E76A8, plateText, plateData, token).bool end,
	---  
	SC_LICENSEPLATE_GET_ADD_IS_PENDING = function(token) return invoker.call(0x07C61676E5BB52CD, token).bool end,
	---  
	SC_LICENSEPLATE_GET_ADD_STATUS = function(token) return invoker.call(0x8147FFF6A718E1AD, token).int end,
	---  
	SC_LICENSEPLATE_ISVALID = function(plateText, token) return invoker.call(0x0F73393BAC7E6730, plateText, token).bool end,
	---  
	SC_LICENSEPLATE_GET_ISVALID_IS_PENDING = function(token) return invoker.call(0xD302E99EDF0449CF, token).bool end,
	---  
	SC_LICENSEPLATE_GET_ISVALID_STATUS = function(token) return invoker.call(0x5C4EBFFA98BDB41C, token).int end,
	---  
	SC_COMMUNITY_EVENT_IS_ACTIVE = function() return invoker.call(0xFF8F3A92B75ED67A).bool end,
	---  
	SC_COMMUNITY_EVENT_GET_EVENT_ID = function() return invoker.call(0x4ED9C8D6DA297639).int end,
	---  
	SC_COMMUNITY_EVENT_GET_EXTRA_DATA_INT = function(p0, p1) return invoker.call(0x710BCDA8071EDED1, p0, p1).bool end,
	---  
	SC_COMMUNITY_EVENT_GET_EXTRA_DATA_FLOAT = function(p0, p1) return invoker.call(0x50A8A36201DBF83E, p0, p1).bool end,
	---  
	SC_COMMUNITY_EVENT_GET_EXTRA_DATA_STRING = function(p0, p1) return invoker.call(0x9DE5D2F723575ED0, p0, p1).bool end,
	---  
	SC_COMMUNITY_EVENT_GET_DISPLAY_NAME = function(p0) return invoker.call(0xC2C97EA97711D1AE, p0).bool end,
	---  
	SC_COMMUNITY_EVENT_IS_ACTIVE_FOR_TYPE = function(p0) return invoker.call(0x450819D8CF90C416, p0).bool end,
	---  
	SC_COMMUNITY_EVENT_GET_EVENT_ID_FOR_TYPE = function(p0) return invoker.call(0x4A7D6E727F941747, p0).int end,
	---  
	SC_COMMUNITY_EVENT_GET_EXTRA_DATA_INT_FOR_TYPE = function(p0, p1, p2) return invoker.call(0xE75A4A2E5E316D86, p0, p1, p2).bool end,
	---  
	SC_COMMUNITY_EVENT_GET_EXTRA_DATA_FLOAT_FOR_TYPE = function(p0, p1, p2) return invoker.call(0x2570E26BE63964E3, p0, p1, p2).bool end,
	---  
	SC_COMMUNITY_EVENT_GET_EXTRA_DATA_STRING_FOR_TYPE = function(p0, p1, p2) return invoker.call(0x1D12A56FC95BE92E, p0, p1, p2).bool end,
	---  
	SC_COMMUNITY_EVENT_GET_DISPLAY_NAME_FOR_TYPE = function(p0, p1) return invoker.call(0x33DF47CC0642061B, p0, p1).bool end,
	---  
	SC_COMMUNITY_EVENT_IS_ACTIVE_BY_ID = function(p0) return invoker.call(0xA468E0BE12B12C70, p0).bool end,
	---  
	SC_COMMUNITY_EVENT_GET_EXTRA_DATA_INT_BY_ID = function(p0, p1, p2) return invoker.call(0x8CC469AB4D349B7C, p0, p1, p2).bool end,
	---  
	SC_COMMUNITY_EVENT_GET_EXTRA_DATA_FLOAT_BY_ID = function(p0, p1, p2) return invoker.call(0xC5A35C73B68F3C49, p0, p1, p2).bool end,
	---  
	SC_COMMUNITY_EVENT_GET_EXTRA_DATA_STRING_BY_ID = function(p0, p1, p2) return invoker.call(0x699E4A5C8C893A18, p0, p1, p2).bool end,
	---  
	SC_COMMUNITY_EVENT_GET_DISPLAY_NAME_BY_ID = function(p0, p1) return invoker.call(0x19853B5B17D77BCA, p0, p1).bool end,
	---  
	SC_TRANSITION_NEWS_SHOW = function(p0) return invoker.call(0x6BFB12CE158E3DD4, p0).bool end,
	---  
	SC_TRANSITION_NEWS_SHOW_TIMED = function(p0, p1) return invoker.call(0xFE4C1D0D3B9CC17E, p0, p1).bool end,
	---  
	SC_TRANSITION_NEWS_SHOW_NEXT_ITEM = function() return invoker.call(0xD8122C407663B995).bool end,
	---  
	SC_TRANSITION_NEWS_HAS_EXTRA_DATA_TU = function() return invoker.call(0x3001BEF2FECA3680).bool end,
	---  
	SC_TRANSITION_NEWS_GET_EXTRA_DATA_INT_TU = function(p0, p1) return invoker.call(0x92DA6E70EF249BD1, p0, p1).bool end,
	---  
	SC_TRANSITION_NEWS_END = function() invoker.call(0x675721C9F644D161) end,
	---  
	SC_PAUSE_NEWS_INIT_STORY_TYPE = function(storyType, textOnly) return invoker.call(0x76A6981AEF0376EB, storyType, textOnly).bool end,
	---Fills some 0x30 sized struct  
	SC_PAUSE_NEWS_GET_PENDING_STORY = function(p0) return invoker.call(0x8A4416C0DB05FA66, p0).bool end,
	---  
	SC_PAUSE_NEWS_SHUTDOWN = function() invoker.call(0xEA95C0853A27888E) end,
	---Returns the nickname of the logged-in Rockstar Social Club account.  
	SC_ACCOUNT_INFO_GET_NICKNAME = function() return invoker.call(0x198D161F458ECC7F).str end,
	---  
	SC_ACHIEVEMENT_INFO_STATUS = function(p0) return invoker.call(0x225798743970412B, p0).bool end,
	---Same as HAS_ACHIEVEMENT_BEEN_PASSED  
	SC_HAS_ACHIEVEMENT_BEEN_PASSED = function(achievementId) return invoker.call(0x418DC16FAE452C1C, achievementId).bool end,
}
STATS={
	---Example:  
	---  
	---for (v_2 = 0; v_2 <= 4; v_2 += 1) {  
	---    STATS::STAT_CLEAR_SLOT_FOR_RELOAD(v_2);  
	---}  
	STAT_CLEAR_SLOT_FOR_RELOAD = function(statSlot) return invoker.call(0xEB0A72181D4AA4AD, statSlot).bool end,
	---  
	STAT_LOAD = function(statSlot) return invoker.call(0xA651443F437B1CE6, statSlot).bool end,
	---  
	STAT_SAVE = function(p0, p1, p2, p3) return invoker.call(0xE07BCA305B82D2FD, p0, p1, p2, p3).bool end,
	---  
	STAT_SET_OPEN_SAVETYPE_IN_JOB = function(p0) invoker.call(0x5688585E6D563CD8, p0) end,
	---  
	STAT_LOAD_PENDING = function(statSlot) return invoker.call(0xA1750FFAFA181661, statSlot).bool end,
	---  
	STAT_SAVE_PENDING = function() return invoker.call(0x7D3A583856F2C5AC).bool end,
	---  
	STAT_SAVE_PENDING_OR_REQUESTED = function() return invoker.call(0xBBB6AD006F1BBEA3).bool end,
	---p0 is characterSlot? seems range from 0 to 2  
	STAT_DELETE_SLOT = function(p0) return invoker.call(0x49A49BED12794D70, p0).bool end,
	---  
	STAT_SLOT_IS_LOADED = function(statSlot) return invoker.call(0x0D0A9F0E7BD91E3C, statSlot).bool end,
	---  
	STAT_CLOUD_SLOT_LOAD_FAILED = function(p0) return invoker.call(0x7F2C4CDF2E82DF4C, p0).bool end,
	---  
	STAT_CLOUD_SLOT_LOAD_FAILED_CODE = function(p0) return invoker.call(0xE496A53BA5F50A56, p0).int end,
	---  
	STAT_SET_BLOCK_SAVES = function(toggle) invoker.call(0xF434A10BA01C37D0, toggle) end,
	---  
	STAT_GET_BLOCK_SAVES = function() return invoker.call(0x6A7F19756F1A9016).bool end,
	---  
	STAT_CLOUD_SLOT_SAVE_FAILED = function(p0) return invoker.call(0x7E6946F68A38B74F, p0).bool end,
	---  
	STAT_CLEAR_PENDING_SAVES = function(p0) invoker.call(0xA8733668D1047B51, p0) end,
	---  
	STAT_LOAD_DIRTY_READ_DETECTED = function() return invoker.call(0xECB41AC6AB754401).bool end,
	---  
	STAT_CLEAR_DIRTY_READ_DETECTED = function() invoker.call(0x9B4BD21D69B1E609) end,
	---  
	STAT_GET_LOAD_SAFE_TO_PROGRESS_TO_MP_FROM_SP = function() return invoker.call(0xC0E0D686DDFC6EAE).bool end,
	---Returns stat hash based on dataType, statIndex/statId and characterSlot. Related to CStatsMpCharacterMappingData  
	_GET_STAT_HASH_FOR_CHARACTER_STAT = function(dataType, statIndex, charSlot) return invoker.call(0xD69CE161FE614531, dataType, statIndex, charSlot).int end,
	---Example:  
	--- STATS::STAT_SET_INT(MISC::GET_HASH_KEY("MPPLY_KILLS_PLAYERS"), 1337, true);  
	STAT_SET_INT = function(statName, value, save) return invoker.call(0xB3271D7AB655B441, statName, value, save).bool end,
	---Example:  
	--- STATS::STAT_SET_FLOAT(MISC::GET_HASH_KEY("MP0_WEAPON_ACCURACY"), 66.6f, true);  
	STAT_SET_FLOAT = function(statName, value, save) return invoker.call(0x4851997F37FE9B3C, statName, value, save).bool end,
	---Example:  
	--- STATS::STAT_SET_BOOL(MISC::GET_HASH_KEY("MPPLY_MELEECHLENGECOMPLETED"), trur, true);  
	STAT_SET_BOOL = function(statName, value, save) return invoker.call(0x4B33C4243DE0C432, statName, value, save).bool end,
	---The following values have been found in the decompiled scripts:  
	---"RC_ABI1"  
	---"RC_ABI2"  
	---"RC_BA1"  
	---"RC_BA2"  
	---"RC_BA3"  
	---"RC_BA3A"  
	---"RC_BA3C"  
	---"RC_BA4"  
	---"RC_DRE1"  
	---"RC_EPS1"  
	---"RC_EPS2"  
	---"RC_EPS3"  
	---"RC_EPS4"  
	---"RC_EPS5"  
	---"RC_EPS6"  
	---"RC_EPS7"  
	---"RC_EPS8"  
	---"RC_EXT1"  
	---"RC_EXT2"  
	---"RC_EXT3"  
	---"RC_EXT4"  
	---"RC_FAN1"  
	---"RC_FAN2"  
	---"RC_FAN3"  
	---"RC_HAO1"  
	---"RC_HUN1"  
	---"RC_HUN2"  
	---"RC_JOS1"  
	---"RC_JOS2"  
	---"RC_JOS3"  
	---"RC_JOS4"  
	---"RC_MAU1"  
	---"RC_MIN1"  
	---"RC_MIN2"  
	---"RC_MIN3"  
	---"RC_MRS1"  
	---"RC_MRS2"  
	---"RC_NI1"  
	---"RC_NI1A"  
	---"RC_NI1B"  
	---"RC_NI1C"  
	---"RC_NI1D"  
	---"RC_NI2"  
	---"RC_NI3"  
	---"RC_OME1"  
	---"RC_OME2"  
	---"RC_PA1"  
	---"RC_PA2"  
	---"RC_PA3"  
	---"RC_PA3A"  
	---"RC_PA3B"  
	---"RC_PA4"  
	---"RC_RAM1"  
	---"RC_RAM2"  
	---"RC_RAM3"  
	---"RC_RAM4"  
	---"RC_RAM5"  
	---"RC_SAS1"  
	---"RC_TON1"  
	---"RC_TON2"  
	---"RC_TON3"  
	---"RC_TON4"  
	---"RC_TON5"  
	STAT_SET_GXT_LABEL = function(statName, value, save) return invoker.call(0x17695002FD8B2AE0, statName, value, save).bool end,
	---'value' is a structure to a structure, 'numFields' is how many fields there are in said structure (usually 7).  
	---  
	---The structure looks like this:  
	---  
	---int year  
	---int month  
	---int day  
	---int hour  
	---int minute  
	---int second  
	---int millisecond  
	---  
	---The decompiled scripts use TIME::GET_POSIX_TIME to fill this structure.  
	STAT_SET_DATE = function(statName, value, numFields, save) return invoker.call(0x2C29BFB64F4FCBE4, statName, value, numFields, save).bool end,
	---  
	STAT_SET_STRING = function(statName, value, save) return invoker.call(0xA87B2335D12531D7, statName, value, save).bool end,
	---  
	STAT_SET_POS = function(statName, x, y, z, save) return invoker.call(0xDB283FDE680FE72E, statName, x, y, z, save).bool end,
	---  
	STAT_SET_MASKED_INT = function(statName, p1, p2, p3, save) return invoker.call(0x7BBB1B54583ED410, statName, p1, p2, p3, save).bool end,
	---  
	STAT_SET_USER_ID = function(statName, value, save) return invoker.call(0x8CDDF1E452BABE11, statName, value, save).bool end,
	---p1 always true.  
	STAT_SET_CURRENT_POSIX_TIME = function(statName, p1) return invoker.call(0xC2F84B7F9C4D0C61, statName, p1).bool end,
	---p2 appears to always be -1  
	---  
	STAT_GET_INT = function(statHash, outValue, p2) return invoker.call(0x767FBC2AC802EF3D, statHash, outValue, p2).bool end,
	---  
	STAT_GET_FLOAT = function(statHash, outValue, p2) return invoker.call(0xD7AE6C9C9C6AC54C, statHash, outValue, p2).bool end,
	---  
	STAT_GET_BOOL = function(statHash, outValue, p2) return invoker.call(0x11B5E6D2AE73F48E, statHash, outValue, p2).bool end,
	---p3 is probably characterSlot or BOOL save, always -1  
	STAT_GET_DATE = function(statHash, outValue, numFields, p3) return invoker.call(0x8B0FACEFC36C824B, statHash, outValue, numFields, p3).bool end,
	---p1 is always -1 in the script files  
	STAT_GET_STRING = function(statHash, p1) return invoker.call(0xE50384ACC2C3DB74, statHash, p1).str end,
	---p3 is probably characterSlot or BOOL save, always -1  
	STAT_GET_POS = function(statName, outX, outY, outZ, p4) return invoker.call(0x350F82CCB186AA1B, statName, outX, outY, outZ, p4).bool end,
	---p4 is probably characterSlot or BOOL save  
	STAT_GET_MASKED_INT = function(statHash, outValue, p2, p3, p4) return invoker.call(0x655185A06D9EEAAB, statHash, outValue, p2, p3, p4).bool end,
	---Returns the rockstar ID (user id) value of a given stat. Returns "STAT_UNKNOWN" if the statHash is invalid or the stat has no userId  
	STAT_GET_USER_ID = function(statHash) return invoker.call(0x2365C388E393BBE2, statHash).str end,
	---  
	STAT_GET_LICENSE_PLATE = function(statName) return invoker.call(0x5473D4195058B2E4, statName).str end,
	---  
	STAT_SET_LICENSE_PLATE = function(statName, str) return invoker.call(0x69FF13266D7296DA, statName, str).bool end,
	---  
	STAT_INCREMENT = function(statName, value) invoker.call(0x9B5A68C6489E9909, statName, value) end,
	---  
	STAT_COMMUNITY_START_SYNCH = function() return invoker.call(0x5A556B229A169402).bool end,
	---  
	STAT_COMMUNITY_SYNCH_IS_PENDING = function() return invoker.call(0xB1D2BB1E1631F5B1).bool end,
	---  
	STAT_COMMUNITY_GET_HISTORY = function(statName, p1, outValue) return invoker.call(0xBED9F5693F34ED17, statName, p1, outValue).bool end,
	---p0 seems to range from 0 to 7  
	STAT_RESET_ALL_ONLINE_CHARACTER_STATS = function(p0) invoker.call(0x26D7399B9587FE89, p0) end,
	---p0 seems to range from 0 to 7  
	STAT_LOCAL_RESET_ALL_ONLINE_CHARACTER_STATS = function(p0) invoker.call(0xA78B8FA58200DA56, p0) end,
	---  
	STAT_GET_NUMBER_OF_DAYS = function(statName) return invoker.call(0xE0E854F5280FB769, statName).int end,
	---  
	STAT_GET_NUMBER_OF_HOURS = function(statName) return invoker.call(0xF2D4B2FE415AAFC3, statName).int end,
	---  
	STAT_GET_NUMBER_OF_MINUTES = function(statName) return invoker.call(0x7583B4BE4C5A41B5, statName).int end,
	---  
	STAT_GET_NUMBER_OF_SECONDS = function(statName) return invoker.call(0x2CE056FF3723F00B, statName).int end,
	---Does not take effect immediately, unfortunately.  
	---  
	---profileSetting seems to only be 936, 937 and 938 in scripts  
	STAT_SET_PROFILE_SETTING_VALUE = function(profileSetting, value) invoker.call(0x68F01422BE1D838F, profileSetting, value) end,
	---  
	STATS_CHARACTER_CREATION_OUTFIT_SELECTED = function(outfit) invoker.call(0x66ED2A62D0054F1A, outfit) end,
	---This native does absolutely nothing, just a nullsub  
	STATS_COMPLETED_CHARACTER_CREATION = function(p0) invoker.call(0xC01D2470F22CDE5A, p0) end,
	---Needs more research. Possibly used to calculate the "mask" when calling "STAT_SET_MASKED_INT"?  
	PACKED_STAT_GET_INT_STAT_INDEX = function(p0) return invoker.call(0x94F12ABF9C79E339, p0).int end,
	---  
	GET_PACKED_INT_STAT_KEY = function(index, spStat, charStat, character) return invoker.call(0x61E111E323419E07, index, spStat, charStat, character).int end,
	---  
	GET_PACKED_TU_INT_STAT_KEY = function(index, spStat, charStat, character) return invoker.call(0xD16C2AD6B8E32854, index, spStat, charStat, character).int end,
	---Needs more research. Gets the stat name of a masked int?  
	---  
	---section - values used in the decompiled scripts:  
	---"_NGPSTAT_INT"  
	---"_MP_NGPSTAT_INT"  
	---"_MP_LRPSTAT_INT"  
	---"_MP_APAPSTAT_INT"  
	---"_MP_LR2PSTAT_INT"  
	---"_MP_BIKEPSTAT_INT"  
	---"_MP_IMPEXPPSTAT_INT"  
	---"_MP_GUNRPSTAT_INT"  
	---"_NGDLCPSTAT_INT"  
	---"_MP_NGDLCPSTAT_INT"  
	---"_DLCSMUGCHARPSTAT_INT"  
	---"_GANGOPSPSTAT_INT"  
	---"_BUSINESSBATPSTAT_INT"  
	---"_ARENAWARSPSTAT_INT"  
	---"_CASINOPSTAT_INT"  
	---"_CASINOHSTPSTAT_INT"  
	GET_PACKED_NG_INT_STAT_KEY = function(index, spStat, charStat, character, section) return invoker.call(0x2B4CDCA6F07FF3DA, index, spStat, charStat, character, section).int end,
	---  
	GET_PACKED_STAT_BOOL_CODE = function(index, characterSlot) return invoker.call(0xDA7EBFC49AE3F1B0, index, characterSlot).bool end,
	---  
	GET_PACKED_STAT_INT_CODE = function(index, characterSlot) return invoker.call(0x0BC900A6FE73770C, index, characterSlot).int end,
	---  
	SET_PACKED_STAT_BOOL_CODE = function(index, value, characterSlot) invoker.call(0xDB8A58AEAA67CD07, index, value, characterSlot) end,
	---  
	SET_PACKED_STAT_INT_CODE = function(index, value, characterSlot) invoker.call(0x1581503AE529CD2E, index, value, characterSlot) end,
	---  
	PLAYSTATS_BACKGROUND_SCRIPT_ACTION = function(action, value) invoker.call(0x5009DFD741329729, action, value) end,
	---  
	_PLAYSTATS_FLOW_LOW = function(posX, posY, posZ, action, p4, p5) invoker.call(0xE6A27CDA42887F93, posX, posY, posZ, action, p4, p5) end,
	---  
	_PLAYSTATS_FLOW_MEDIUM = function(posX, posY, posZ, action, p4, p5) invoker.call(0xC4493521BAA12CCE, posX, posY, posZ, action, p4, p5) end,
	---  
	_PLAYSTATS_FLOW_HIGH = function(posX, posY, posZ, action, p4, p5) invoker.call(0xCFB0E9C3456319EA, posX, posY, posZ, action, p4, p5) end,
	---  
	PLAYSTATS_NPC_INVITE = function(p0) invoker.call(0x93054C88E6AA7C44, p0) end,
	---  
	PLAYSTATS_AWARD_XP = function(amount, type, category) invoker.call(0x46F917F6B4128FE4, amount, type, category) end,
	---  
	PLAYSTATS_RANK_UP = function(rank) invoker.call(0xC7F2DE41D102BFB4, rank) end,
	---  
	PLAYSTATS_STARTED_SESSION_IN_OFFLINEMODE = function() invoker.call(0x098760C7461724CD) end,
	---  
	PLAYSTATS_ACTIVITY_DONE = function(p0, activityId, p2) invoker.call(0xA071E0ED98F91286, p0, activityId, p2) end,
	---  
	PLAYSTATS_LEAVE_JOB_CHAIN = function(p0, p1, p2, p3, p4) invoker.call(0xC5BE134EC7BA96A0, p0, p1, p2, p3, p4) end,
	---  
	PLAYSTATS_MISSION_STARTED = function(p0, p1, p2, p3) invoker.call(0xC19A2925C34D2231, p0, p1, p2, p3) end,
	---  
	PLAYSTATS_MISSION_OVER = function(p0, p1, p2, p3, p4, p5) invoker.call(0x7C4BB33A8CED7324, p0, p1, p2, p3, p4, p5) end,
	---  
	PLAYSTATS_MISSION_CHECKPOINT = function(p0, p1, p2, p3) invoker.call(0xC900596A63978C1D, p0, p1, p2, p3) end,
	---  
	PLAYSTATS_RANDOM_MISSION_DONE = function(name, p1, p2, p3) invoker.call(0x71862B1D855F32E1, name, p1, p2, p3) end,
	---  
	PLAYSTATS_ROS_BET = function(amount, act, player, cm) invoker.call(0x121FB4DDDC2D5291, amount, act, player, cm) end,
	---  
	PLAYSTATS_RACE_CHECKPOINT = function(p0, p1, p2, p3, p4) invoker.call(0x9C375C315099DDE4, p0, p1, p2, p3, p4) end,
	---  
	PLAYSTATS_CREATE_MATCH_HISTORY_ID_2 = function(playerAccountId, posixTime) return invoker.call(0x6DEE77AFF8C21BD1, playerAccountId, posixTime).bool end,
	---  
	PLAYSTATS_MATCH_STARTED = function(p0, p1, p2) invoker.call(0xBC80E22DED931E3D, p0, p1, p2) end,
	---  
	PLAYSTATS_SHOP_ITEM = function(p0, p1, p2, p3, p4) invoker.call(0x176852ACAAC173D1, p0, p1, p2, p3, p4) end,
	---  
	PLAYSTATS_CRATE_DROP_MISSION_DONE = function(p0, p1, p2, p3, p4, p5, p6, p7) invoker.call(0x1CAE5D2E3F9A07F0, p0, p1, p2, p3, p4, p5, p6, p7) end,
	---  
	PLAYSTATS_CRATE_CREATED = function(p0, p1, p2) invoker.call(0xAFC7E5E075A96F46, p0, p1, p2) end,
	---  
	PLAYSTATS_HOLD_UP_MISSION_DONE = function(p0, p1, p2, p3) invoker.call(0xCB00196B31C39EB1, p0, p1, p2, p3) end,
	---  
	PLAYSTATS_IMPORT_EXPORT_MISSION_DONE = function(p0, p1, p2, p3) invoker.call(0x2B69F5074C894811, p0, p1, p2, p3) end,
	---  
	PLAYSTATS_RACE_TO_POINT_MISSION_DONE = function(p0, p1, p2, p3) invoker.call(0xADDD1C754E2E2914, p0, p1, p2, p3) end,
	---  
	PLAYSTATS_ACQUIRED_HIDDEN_PACKAGE = function(p0) invoker.call(0x79AB33F0FBFAC40C, p0) end,
	---  
	PLAYSTATS_WEBSITE_VISITED = function(scaleformHash, p1) invoker.call(0xDDF24D535060F811, scaleformHash, p1) end,
	---  
	PLAYSTATS_FRIEND_ACTIVITY = function(p0, p1) invoker.call(0x0F71DE29AB2258F1, p0, p1) end,
	---This native does absolutely nothing, just a nullsub  
	PLAYSTATS_ODDJOB_DONE = function(totalTimeMs, p1, p2) invoker.call(0x69DEA3E9DB727B4C, totalTimeMs, p1, p2) end,
	---  
	PLAYSTATS_PROP_CHANGE = function(p0, p1, p2, p3) invoker.call(0xBA739D6D5A05D6E7, p0, p1, p2, p3) end,
	---  
	PLAYSTATS_CLOTH_CHANGE = function(p0, p1, p2, p3, p4) invoker.call(0x34B973047A2268B9, p0, p1, p2, p3, p4) end,
	---This is a typo made by R*. It's supposed to be called PLAYSTATS_WEAPON_MOD_CHANGE.  
	PLAYSTATS_WEAPON_MODE_CHANGE = function(weaponHash, componentHashTo, componentHashFrom) invoker.call(0xE95C8A1875A02CA4, weaponHash, componentHashTo, componentHashFrom) end,
	---  
	PLAYSTATS_CHEAT_APPLIED = function(cheat) invoker.call(0x6058665D72302D3F, cheat) end,
	---  
	PLAYSTATS_JOB_ACTIVITY_END = function(p0, p1, p2, p3) invoker.call(0xF8C54A461C3E11DC, p0, p1, p2, p3) end,
	---  
	PLAYSTATS_JOB_BEND = function(p0, p1, p2, p3) invoker.call(0xF5BB8DAC426A52C0, p0, p1, p2, p3) end,
	---  
	PLAYSTATS_JOB_LTS_END = function(p0, p1, p2, p3) invoker.call(0xA736CF7FB7C5BFF4, p0, p1, p2, p3) end,
	---  
	PLAYSTATS_JOB_LTS_ROUND_END = function(p0, p1, p2, p3) invoker.call(0x14E0B2D1AD1044E0, p0, p1, p2, p3) end,
	---  
	PLAYSTATS_QUICKFIX_TOOL = function(element, item) invoker.call(0x90D0622866E80445, element, item) end,
	---  
	PLAYSTATS_IDLE_KICK = function(msStoodIdle) invoker.call(0x5DA3A8DE8CB6226F, msStoodIdle) end,
	---  
	PLAYSTATS_SET_JOIN_TYPE = function(joinType) invoker.call(0xD1032E482629049E, joinType) end,
	---  
	PLAYSTATS_HEIST_SAVE_CHEAT = function(hash, p1) invoker.call(0xF4FF020A08BC8863, hash, p1) end,
	---  
	PLAYSTATS_APPEND_DIRECTOR_METRIC = function(p0) invoker.call(0x46326E13DA4E0546, p0) end,
	---  
	PLAYSTATS_AWARD_BAD_SPORT = function(id) invoker.call(0x47B32F5611E6E483, id) end,
	---  
	PLAYSTATS_PEGASUS_AS_PERSONAL_AIRCRAFT = function(modelHash) invoker.call(0x9572BD4DD6B72122, modelHash) end,
	---  
	_PLAYSTATS_SHOPMENU_NAV = function(p0, p1, p2, p3) invoker.call(0xF96E9EA876D9DC92, p0, p1, p2, p3) end,
	---  
	PLAYSTATS_FM_EVENT_CHALLENGES = function(p0) invoker.call(0x6A60E43998228229, p0) end,
	---  
	PLAYSTATS_FM_EVENT_VEHICLETARGET = function(p0) invoker.call(0xBFAFDB5FAAA5C5AB, p0) end,
	---  
	PLAYSTATS_FM_EVENT_URBANWARFARE = function(p0) invoker.call(0x8C9D11605E59D955, p0) end,
	---  
	PLAYSTATS_FM_EVENT_CHECKPOINTCOLLECTION = function(p0) invoker.call(0x3DE3AA516FB126A4, p0) end,
	---  
	PLAYSTATS_FM_EVENT_ATOB = function(p0) invoker.call(0xBAA2F0490E146BE8, p0) end,
	---  
	PLAYSTATS_FM_EVENT_PENNEDIN = function(p0) invoker.call(0x1A7CE7CD3E653485, p0) end,
	---  
	PLAYSTATS_FM_EVENT_PASSTHEPARCEL = function(p0) invoker.call(0x419615486BBF1956, p0) end,
	---  
	PLAYSTATS_FM_EVENT_HOTPROPERTY = function(p0) invoker.call(0x84DFC579C2FC214C, p0) end,
	---  
	PLAYSTATS_FM_EVENT_DEADDROP = function(p0) invoker.call(0x0A9C7F36E5D7B683, p0) end,
	---  
	PLAYSTATS_FM_EVENT_KINGOFTHECASTLE = function(p0) invoker.call(0x164C5FF663790845, p0) end,
	---  
	PLAYSTATS_FM_EVENT_CRIMINALDAMAGE = function(p0) invoker.call(0xEDBF6C9B0D2C65C8, p0) end,
	---  
	PLAYSTATS_FM_EVENT_COMPETITIVEURBANWARFARE = function(p0) invoker.call(0x6551B1F7F6CD46EA, p0) end,
	---  
	PLAYSTATS_FM_EVENT_HUNTBEAST = function(p0) invoker.call(0x2CD90358F67D0AA8, p0) end,
	---  
	PLAYSTATS_PIMENU_HIDE_OPTIONS = function(data) invoker.call(0x203B381133817079, data) end,
	---Known text types: NAME_YACHT, NAME_ORG_OFFICE  
	_PLAYSTATS_NAMED_USER_CONTENT = function(isBoss, bossType, bossId1, bossId2, textType, textString, textSource) invoker.call(0xAA434D7D0A89A95C, isBoss, bossType, bossId1, bossId2, textType, textString, textSource) end,
	---  
	LEADERBOARDS_GET_NUMBER_OF_COLUMNS = function(p0, p1) return invoker.call(0x117B45156D7EFF2E, p0, p1).int end,
	---  
	LEADERBOARDS_GET_COLUMN_ID = function(p0, p1, p2) return invoker.call(0xC4B5467A1886EA7E, p0, p1, p2).int end,
	---  
	LEADERBOARDS_GET_COLUMN_TYPE = function(p0, p1, p2) return invoker.call(0xBF4FEF46DB7894D3, p0, p1, p2).int end,
	---  
	LEADERBOARDS_READ_CLEAR_ALL = function() return invoker.call(0xA34CB6E6F0DF4A0B).int end,
	---  
	LEADERBOARDS_READ_CLEAR = function(p0, p1, p2) return invoker.call(0x7CCE5C737A665701, p0, p1, p2).int end,
	---  
	LEADERBOARDS_READ_PENDING = function(p0, p1, p2) return invoker.call(0xAC392C8483342AC2, p0, p1, p2).bool end,
	---  
	LEADERBOARDS_READ_ANY_PENDING = function() return invoker.call(0xA31FD15197B192BD).bool end,
	---  
	LEADERBOARDS_READ_SUCCESSFUL = function(p0, p1, p2) return invoker.call(0x2FB19228983E832C, p0, p1, p2).bool end,
	---  
	LEADERBOARDS2_READ_FRIENDS_BY_ROW = function(p0, p1, p2, p3, p4, p5) return invoker.call(0x918B101666F9CB83, p0, p1, p2, p3, p4, p5).bool end,
	---  
	LEADERBOARDS2_READ_BY_HANDLE = function(p0, p1) return invoker.call(0xC30713A383BFBF0E, p0, p1).bool end,
	---  
	LEADERBOARDS2_READ_BY_RANK = function(p0, p1, p2) return invoker.call(0xBA2C7DB0C129449A, p0, p1, p2).bool end,
	---  
	LEADERBOARDS2_READ_BY_RADIUS = function(p0, p1, p2) return invoker.call(0x5CE587FB5A42C8C4, p0, p1, p2).bool end,
	---  
	LEADERBOARDS2_READ_BY_SCORE_INT = function(p0, p1, p2) return invoker.call(0x7EEC7E4F6984A16A, p0, p1, p2).bool end,
	---  
	LEADERBOARDS2_READ_BY_SCORE_FLOAT = function(p0, p1, p2) return invoker.call(0xE662C8B759D08F3C, p0, p1, p2).bool end,
	---  
	LEADERBOARDS2_READ_RANK_PREDICTION = function(p0, p1, p2) return invoker.call(0xC38DC1E90D22547C, p0, p1, p2).bool end,
	---  
	LEADERBOARDS2_READ_BY_PLAFORM = function(p0, gamerHandleCsv, platformName) return invoker.call(0xF1AE5DCDBFCA2721, p0, gamerHandleCsv, platformName).bool end,
	---  
	LEADERBOARDS2_READ_GET_ROW_DATA_START = function(p0) return invoker.call(0xA0F93D5465B3094D, p0).bool end,
	---  
	LEADERBOARDS2_READ_GET_ROW_DATA_END = function() invoker.call(0x71B008056E5692D6) end,
	---  
	LEADERBOARDS2_READ_GET_ROW_DATA_INFO = function(p0, p1) return invoker.call(0x34770B9CE0E03B91, p0, p1).bool end,
	---  
	LEADERBOARDS2_READ_GET_ROW_DATA_INT = function(p0, p1) return invoker.call(0x88578F6EC36B4A3A, p0, p1).int end,
	---  
	LEADERBOARDS2_READ_GET_ROW_DATA_FLOAT = function(p0, p1) return invoker.call(0x38491439B6BA7F7D, p0, p1).float end,
	---  
	LEADERBOARDS2_WRITE_DATA = function(p0) return invoker.call(0xAE2206545888AE49, p0).bool end,
	---  
	LEADERBOARDS_WRITE_ADD_COLUMN = function(p0, p1, p2) invoker.call(0x0BCA1D2C47B0D269, p0, p1, p2) end,
	---  
	LEADERBOARDS_WRITE_ADD_COLUMN_LONG = function(p0, p1, p2) invoker.call(0x2E65248609523599, p0, p1, p2) end,
	---  
	LEADERBOARDS_CACHE_DATA_ROW = function(p0) return invoker.call(0xB9BB18E2C40142ED, p0).bool end,
	---  
	LEADERBOARDS_CLEAR_CACHE_DATA = function() invoker.call(0xD4B02A6B476E1FDC) end,
	---  
	LEADERBOARDS_CLEAR_CACHE_DATA_ID = function(p0) invoker.call(0x8EC74CEB042E7CFF, p0) end,
	---  
	LEADERBOARDS_GET_CACHE_EXISTS = function(p0) return invoker.call(0x9C51349BE6CDFE2C, p0).bool end,
	---  
	LEADERBOARDS_GET_CACHE_TIME = function(p0) return invoker.call(0xF04C1C27DA35F6C8, p0).int end,
	---  
	LEADERBOARDS_GET_CACHE_NUMBER_OF_ROWS = function(p0) return invoker.call(0x58A651CD201D89AD, p0).int end,
	---  
	LEADERBOARDS_GET_CACHE_DATA_ROW = function(p0, p1, p2) return invoker.call(0x9120E8DBA3D69273, p0, p1, p2).bool end,
	---  
	PRESENCE_EVENT_UPDATESTAT_INT = function(statHash, value, p2) invoker.call(0x11FF1C80276097ED, statHash, value, p2) end,
	---  
	PRESENCE_EVENT_UPDATESTAT_FLOAT = function(statHash, value, p2) invoker.call(0x30A6614C1F7799B8, statHash, value, p2) end,
	---  
	PRESENCE_EVENT_UPDATESTAT_INT_WITH_STRING = function(statHash, value, p2, string) invoker.call(0x6483C25849031C4F, statHash, value, p2, string) end,
	---  
	GET_PLAYER_HAS_DRIVEN_ALL_VEHICLES = function() return invoker.call(0x5EAD2BF6484852E4).bool end,
	---  
	SET_HAS_POSTED_ALL_VEHICLES_DRIVEN = function() invoker.call(0xC141B8917E0017EC) end,
	---  
	SET_PROFILE_SETTING_PROLOGUE_COMPLETE = function() invoker.call(0xB475F27C6A994D65) end,
	---Sets profile setting 939  
	SET_PROFILE_SETTING_SP_CHOP_MISSION_COMPLETE = function() invoker.call(0xC67E2DA1CBE759E2) end,
	---Sets profile setting 933  
	SET_PROFILE_SETTING_CREATOR_RACES_DONE = function(value) invoker.call(0xF1A1803D3476F215, value) end,
	---Sets profile setting 934  
	SET_PROFILE_SETTING_CREATOR_DM_DONE = function(value) invoker.call(0x38BAAA5DD4C9D19F, value) end,
	---Sets profile setting 935  
	SET_PROFILE_SETTING_CREATOR_CTF_DONE = function(value) invoker.call(0x55384438FC55AD8E, value) end,
	---  
	SET_JOB_ACTIVITY_ID_STARTED = function(p0, characterSlot) invoker.call(0x723C1CE13FBFDB67, p0, characterSlot) end,
	---  
	SET_FREEMODE_PROLOGUE_DONE = function(p0, characterSlot) invoker.call(0x0D01D20616FC73FB, p0, characterSlot) end,
	---Sets profile setting 940 and 941  
	SET_FREEMODE_STRAND_PROGRESSION_STATUS = function(profileSetting, settingValue) invoker.call(0x79D310A861697CC9, profileSetting, settingValue) end,
	---  
	STAT_NETWORK_INCREMENT_ON_SUICIDE = function(p0, p1) invoker.call(0x428EAF89E24F6C36, p0, p1) end,
	---  
	STAT_SET_CHEAT_IS_ACTIVE = function() invoker.call(0x047CBED6F6F8B63C) end,
	---  
	LEADERBOARDS2_WRITE_DATA_FOR_EVENT_TYPE = function(p0, p1) return invoker.call(0xC980E62E33DF1D5C, p0, p1).bool end,
	---  
	FORCE_CLOUD_MP_STATS_DOWNLOAD_AND_OVERWRITE_LOCAL_SAVE = function() invoker.call(0x6F361B8889A792A3) end,
	---  
	STAT_MIGRATE_CLEAR_FOR_RESTART = function() invoker.call(0xC847B43F369AC0B5) end,
	---platformName must be one of the following: ps3, xbox360, ps4, xboxone  
	STAT_MIGRATE_SAVEGAME_START = function(platformName) return invoker.call(0xA5C80D8E768A9E66, platformName).bool end,
	---  
	STAT_MIGRATE_SAVEGAME_GET_STATUS = function() return invoker.call(0x9A62EC95AE10E011).int end,
	---  
	STAT_MIGRATE_CHECK_ALREADY_DONE = function() return invoker.call(0x4C89FE2BDEB3F169).bool end,
	---  
	STAT_MIGRATE_CHECK_START = function() return invoker.call(0xC6E0E2616A7576BB).bool end,
	---  
	STAT_MIGRATE_CHECK_GET_IS_PLATFORM_AVAILABLE = function(p0) return invoker.call(0x5BD5F255321C4AAF, p0).int end,
	---  
	STAT_MIGRATE_CHECK_GET_PLATFORM_STATUS = function(p0, p1) return invoker.call(0xDEAAF77EB3687E97, p0, p1).int end,
	---  
	STAT_GET_SAVE_MIGRATION_STATUS = function(data) return invoker.call(0x886913BBEACA68C1, data).int end,
	---  
	STAT_SAVE_MIGRATION_CANCEL_PENDING_OPERATION = function() return invoker.call(0x4FEF53183C3C6414).bool end,
	---  
	STAT_GET_CANCEL_SAVE_MIGRATION_STATUS = function() return invoker.call(0x567384DFA67029E6).int end,
	---  
	STAT_SAVE_MIGRATION_CONSUME_CONTENT = function(contentId, srcPlatform, srcGamerHandle) return invoker.call(0x3270F67EED31FBC1, contentId, srcPlatform, srcGamerHandle).bool end,
	---  
	STAT_GET_SAVE_MIGRATION_CONSUME_CONTENT_STATUS = function(p0) return invoker.call(0xCE5AA445ABA8DEE0, p0).int end,
	---  
	STAT_ENABLE_STATS_TRACKING = function() invoker.call(0x98E2BC1CA26287C3) end,
	---Prevents updates to CStatsMgr (e.g., STAT_SET_* natives)  
	STAT_DISABLE_STATS_TRACKING = function() invoker.call(0x629526ABA383BCAA) end,
	---  
	STAT_IS_STATS_TRACKING_ENABLED = function() return invoker.call(0xBE3DB208333D9844).bool end,
	---enum StatTrackingType  
	---{  
	---	LongestWheelie = 1,  
	---	LongestStoppie = 2,  
	---	NoCrashes = 3,  
	---	HighestSpeed = 4,  
	---	_MostFlips = 5,  
	---	_LongestSpin = 6,  
	---	_HighestJumpReached = 7,  
	---	LongestJump = 8,  
	---	_NearMissesNoCrash = 9,  
	---	LongestFallSurvived = 10,  
	---	LowestParachute = 11,  
	---	ReverseDriving = 12,  
	---	LongestFreefall = 13,  
	---	VehiclesStolen = 14,  
	---	_SomeCFireEventCount = 15,  
	---	_Unk16 = 16,  
	---	_LowFlyingTime = 17,  
	---	LowFlying = 18,  
	---	_InvertedFlyingTime = 19,  
	---	InvertedFlying = 20,  
	---	_PlaneSpinCount = 21,  
	---	MeleeKills = 22, // Players  
	---	_LongestSniperKill = 23,  
	---	SniperSkills = 24, // Players  
	---	DrivebyKills = 25, // Players  
	---	HeadshotKills = 26, // Players  
	---	LongestBail = 27,  
	---	_TotalRammedByCar = 28,  
	---	NearMissesPrecise = 29,  
	---	_FreefallTime = 30,  
	---	Unk31 = 31,  
	---}  
	---  
	---enum StatTrackingValueType  
	---{  
	---	Total,  
	---	Max,  
	---	Min  
	---}  
	STAT_START_RECORD_STAT = function(statType, valueType) return invoker.call(0x33D72899E24C3365, statType, valueType).bool end,
	---  
	STAT_STOP_RECORD_STAT = function() return invoker.call(0xA761D4AC6115623D).bool end,
	---  
	STAT_GET_RECORDED_VALUE = function(value) return invoker.call(0xF11F01D98113536A, value).bool end,
	---  
	STAT_IS_RECORDING_STAT = function() return invoker.call(0x8B9CDBD6C566C38C).bool end,
	---Perform the most near misses with other vehicles in a land vehicle without crashing  
	STAT_GET_CURRENT_NEAR_MISS_NOCRASH_PRECISE = function() return invoker.call(0xE8853FBCE7D8D0D6).int end,
	---Perform the longest wheelie on a motorcycle  
	STAT_GET_CURRENT_REAR_WHEEL_DISTANCE = function() return invoker.call(0xA943FD1722E11EFD).float end,
	---Perform the longest stoppie on a motorcycle  
	STAT_GET_CURRENT_FRONT_WHEEL_DISTANCE = function() return invoker.call(0x84A810B375E69C0E).float end,
	---Perform the longest jump in a land vehicle  
	STAT_GET_CURRENT_JUMP_DISTANCE = function() return invoker.call(0x9EC8858184CD253A).float end,
	---Drive the furthest distance in a land vehicle without crashing  
	STAT_GET_CURRENT_DRIVE_NOCRASH_DISTANCE = function() return invoker.call(0xBA9749CC94C1FD85).float end,
	---Achieve the highest speed in a land vehicle  
	STAT_GET_CURRENT_SPEED = function() return invoker.call(0x55A8BECAF28A4EB7).float end,
	---Reverse the longest distance without crashing  
	STAT_GET_CURRENT_DRIVING_REVERSE_DISTANCE = function() return invoker.call(0x32CAC93C9DE73D32).float end,
	---Fall the longest distance with a parachute before opening it  
	STAT_GET_CURRENT_SKYDIVING_DISTANCE = function() return invoker.call(0xAFF47709F1D5DCCE).float end,
	---Fly low to the ground for the longest distance  
	STAT_GET_CHALLENGE_FLYING_DIST = function() return invoker.call(0x6E0A5253375C4584).float end,
	---  
	STAT_GET_FLYING_ALTITUDE = function(outValue) return invoker.call(0x1A8EA222F9C67DBB, outValue).bool end,
	---Or non-flyable area  
	STAT_IS_PLAYER_VEHICLE_ABOVE_OCEAN = function() return invoker.call(0xF9F2922717B819EC).bool end,
	---Travel the furthest distance when bailing from a vehicle  
	STAT_GET_VEHICLE_BAIL_DISTANCE = function() return invoker.call(0x0B8B7F74BF061C6D).float end,
	---This function is hard-coded to always return 1.  
	STAT_ROLLBACK_SAVE_MIGRATION = function() return invoker.call(0xB3DA2606774A8E2D).bool end,
	---Sets profile setting 866  
	SET_HAS_SPECIALEDITION_CONTENT = function(value) invoker.call(0xDAC073C7901F9E15, value) end,
	---Sets profile setting 501  
	SET_SAVE_MIGRATION_TRANSACTION_ID_WARNING = function(transactionId) invoker.call(0xF6792800AC95350D, transactionId) end,
	---  
	GET_BOSS_GOON_UUID = function(characterSlot, p1, p2) invoker.call(0x6BC0ACD0673ACEBE, characterSlot, p1, p2) end,
	---  
	PLAYSTATS_BW_BOSSONBOSSDEATHMATCH = function(p0) invoker.call(0x8D8ADB562F09A245, p0) end,
	---  
	PLAYSTATS_BW_YATCHATTACK = function(p0) invoker.call(0xD1A1EE3B4FA8E760, p0) end,
	---  
	PLAYSTATS_BW_HUNT_THE_BOSS = function(p0) invoker.call(0x88087EE1F28024AE, p0) end,
	---  
	PLAYSTATS_BW_SIGHTSEER = function(p0) invoker.call(0xFCC228E07217FCAC, p0) end,
	---  
	PLAYSTATS_BW_ASSAULT = function(p0) invoker.call(0x678F86D8FC040BDB, p0) end,
	---  
	PLAYSTATS_BW_BELLY_OF_THE_BEAST = function(p0) invoker.call(0xA6F54BB2FFCA35EA, p0) end,
	---  
	PLAYSTATS_BW_HEAD_HUNTER = function(p0) invoker.call(0x5FF2C33B13A02A11, p0) end,
	---  
	PLAYSTATS_BW_FRAGILE_GOODS = function(p0) invoker.call(0x282B6739644F4347, p0) end,
	---  
	PLAYSTATS_BW_AIR_FREIGHT = function(p0) invoker.call(0xF06A6F41CB445443, p0) end,
	---  
	PLAYSTATS_BC_CAR_JACKING = function(p0) invoker.call(0x7B18DA61F6BAE9D5, p0) end,
	---  
	PLAYSTATS_BC_SMASH_AND_GRAB = function(p0) invoker.call(0x06EAF70AE066441E, p0) end,
	---  
	PLAYSTATS_BC_PROTECTION_RACKET = function(p0) invoker.call(0x14EDA9EE27BD1626, p0) end,
	---  
	PLAYSTATS_BC_MOST_WANTED = function(p0) invoker.call(0x930F504203F561C9, p0) end,
	---  
	PLAYSTATS_BC_FINDERS_KEEPERS = function(p0) invoker.call(0xE3261D791EB44ACB, p0) end,
	---  
	PLAYSTATS_BC_POINT_TO_POINT = function(p0) invoker.call(0x73001E34F85137F8, p0) end,
	---  
	PLAYSTATS_BC_CASHING = function(p0) invoker.call(0x53CAE13E9B426993, p0) end,
	---  
	PLAYSTATS_BC_SALVAGE = function(p0) invoker.call(0x7D36291161859389, p0) end,
	---  
	PLAYSTATS_SPENT_PI_CUSTOM_LOADOUT = function(amount) invoker.call(0xBE509B0A3693DE8B, amount) end,
	---  
	PLAYSTATS_BUY_CONTRABAND_MISSION = function(data) invoker.call(0xD6781E42755531F7, data) end,
	---  
	PLAYSTATS_SELL_CONTRABAND_MISSION = function(data) invoker.call(0xC729991A9065376E, data) end,
	---  
	PLAYSTATS_DEFEND_CONTRABAND_MISSION = function(data) invoker.call(0x2605663BD4F23B5D, data) end,
	---  
	PLAYSTATS_RECOVER_CONTRABAND_MISSION = function(data) invoker.call(0x04D90BA8207ADA2D, data) end,
	---  
	PLAYSTATS_HIT_CONTRABAND_DESTROY_LIMIT = function(p0) invoker.call(0x60EEDC12AF66E846, p0) end,
	---  
	START_BEING_BOSS = function(p0, p1, p2) invoker.call(0x3EBEAC6C3F81F6BD, p0, p1, p2) end,
	---  
	START_BEING_GOON = function(p0, p1, p2) invoker.call(0x96E6D5150DBF1C09, p0, p1, p2) end,
	---  
	END_BEING_BOSS = function(p0, p1, p2) invoker.call(0xA3C53804BDB68ED2, p0, p1, p2) end,
	---  
	END_BEING_GOON = function(p0, p1, p2, p3, p4) invoker.call(0x6BCCF9948492FD85, p0, p1, p2, p3, p4) end,
	---  
	HIRED_LIMO = function(p0, p1) invoker.call(0x792271AB35C356A4, p0, p1) end,
	---  
	ORDER_BOSS_VEHICLE = function(p0, p1, vehicleHash) invoker.call(0xCEA553E35C2246E1, p0, p1, vehicleHash) end,
	---  
	CHANGE_UNIFORM = function(p0, p1, p2) invoker.call(0xD1C9B92BDD3F151D, p0, p1, p2) end,
	---  
	CHANGE_GOON_LOOKING_FOR_WORK = function(p0) invoker.call(0x44919CC079BB60BF, p0) end,
	---  
	SEND_METRIC_GHOSTING_TO_PLAYER = function(p0) invoker.call(0x7033EEFD9B28088E, p0) end,
	---  
	SEND_METRIC_VIP_POACH = function(p0, p1, p2) invoker.call(0xAA525DFF66BB82F5, p0, p1, p2) end,
	---  
	SEND_METRIC_PUNISH_BODYGUARD = function(p0) invoker.call(0x015B03EE1C43E6EC, p0) end,
	---Allows CEventNetworkStuntPerformed to be triggered.  
	PLAYSTATS_START_TRACKING_STUNTS = function() invoker.call(0x928DBFB892638EF3) end,
	---Disallows CEventNetworkStuntPerformed to be triggered.  
	PLAYSTATS_STOP_TRACKING_STUNTS = function() invoker.call(0x8A800DACCC0DA55D) end,
	---  
	PLAYSTATS_MISSION_ENDED = function(p0) invoker.call(0xBF371CD2B64212FD, p0) end,
	---  
	PLAYSTATS_IMPEXP_MISSION_ENDED = function(p0) invoker.call(0x7D8BA05688AD64C7, p0) end,
	---  
	PLAYSTATS_CHANGE_MC_ROLE = function(p0, p1, p2, p3, role, p5, p6) invoker.call(0x0B565B0AAE56A0E8, p0, p1, p2, p3, role, p5, p6) end,
	---  
	PLAYSTATS_CHANGE_MC_OUTFIT = function(p0, p1, p2, p3, p4) invoker.call(0x28ECB8AC2F607DB2, p0, p1, p2, p3, p4) end,
	---  
	PLAYSTATS_SWITCH_MC_EMBLEM = function(p0, p1, p2, p3, p4) invoker.call(0x0A50D2604E05CB94, p0, p1, p2, p3, p4) end,
	---  
	PLAYSTATS_MC_REQUEST_BIKE = function(p0, p1, p2, p3, p4) invoker.call(0xCC25A4553DFBF9EA, p0, p1, p2, p3, p4) end,
	---  
	PLAYSTATS_MC_KILLED_RIVAL_MC_MEMBER = function(p0, p1, p2, p3, p4) invoker.call(0xF534D94DFA2EAD26, p0, p1, p2, p3, p4) end,
	---  
	PLAYSTATS_ABANDONED_MC = function(p0, p1, p2, p3, p4) invoker.call(0xD558BEC0BBA7E8D2, p0, p1, p2, p3, p4) end,
	---  
	PLAYSTATS_EARNED_MC_POINTS = function(p0, p1, p2, p3, p4, p5) invoker.call(0x501478855A6074CE, p0, p1, p2, p3, p4, p5) end,
	---  
	PLAYSTATS_MC_FORMATION_ENDS = function(p0, p1, p2, p3, p4, p5, p6) invoker.call(0x03C2EEBB04B3FB72, p0, p1, p2, p3, p4, p5, p6) end,
	---  
	PLAYSTATS_MC_CLUBHOUSE_ACTIVITY = function(p0, p1, p2, p3, p4, p5, p6, p7) invoker.call(0x8989CBD7B4E82534, p0, p1, p2, p3, p4, p5, p6, p7) end,
	---  
	PLAYSTATS_RIVAL_BEHAVIOR = function(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9) invoker.call(0x27AA1C973CACFE63, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9) end,
	---  
	PLAYSTATS_COPY_RANK_INTO_NEW_SLOT = function(p0, p1, p2, p3, p4, p5, p6) invoker.call(0xB7257BA2550EA10A, p0, p1, p2, p3, p4, p5, p6) end,
	---  
	PLAYSTATS_DUPE_DETECTED = function(data) invoker.call(0x848B66100EE33B05, data) end,
	---  
	PLAYSTATS_BAN_ALERT = function(p0) invoker.call(0x516FC96EB88EEFE5, p0) end,
	---  
	PLAYSTATS_GUNRUNNING_MISSION_ENDED = function(data) invoker.call(0x0EACDF8487D5155A, data) end,
	---  
	PLAYSTATS_GUNRUNNING_RND = function(p0) invoker.call(0xDAF80797FC534BEC, p0) end,
	---  
	PLAYSTATS_BUSINESS_BATTLE_ENDED = function(p0) invoker.call(0x316DB59CD14C1774, p0) end,
	---  
	PLAYSTATS_WAREHOUSE_MISSION_ENDED = function(p0) invoker.call(0x2D7A9B577E72385E, p0) end,
	---  
	PLAYSTATS_NIGHTCLUB_MISSION_ENDED = function(p0) invoker.call(0x830C3A44EB3F2CF9, p0) end,
	---  
	PLAYSTATS_DJ_USAGE = function(p0, p1) invoker.call(0xB26F670685631727, p0, p1) end,
	---  
	PLAYSTATS_MINIGAME_USAGE = function(p0, p1, p2) invoker.call(0xC14BD9F5337219B2, p0, p1, p2) end,
	---  
	PLAYSTATS_STONE_HATCHET_ENDED = function(data) invoker.call(0x35E39E5570358630, data) end,
	---  
	PLAYSTATS_SMUGGLER_MISSION_ENDED = function(data) invoker.call(0x320C35147D5B5DDD, data) end,
	---  
	PLAYSTATS_FM_HEIST_PREP_ENDED = function(data) invoker.call(0xD8AFB345A9C5CCBB, data) end,
	---  
	PLAYSTATS_INSTANCED_HEIST_ENDED = function(data, p1, p2, p3) invoker.call(0x1E1497D0D2108115, data, p1, p2, p3) end,
	---  
	PLAYSTATS_DAR_CHECKPOINT = function(data) invoker.call(0x0BC254FF3A911501, data) end,
	---  
	PLAYSTATS_ENTER_SESSION_PACK = function(data) invoker.call(0x878FF156D36E9956, data) end,
	---  
	PLAYSTATS_DRONE_USAGE = function(p0, p1, p2) invoker.call(0x66C7BB2416ED3FCE, p0, p1, p2) end,
	---  
	PLAYSTATS_SPIN_WHEEL = function(p0, p1, p2, p3) invoker.call(0x6731DE84A38BFAD0, p0, p1, p2, p3) end,
	---  
	PLAYSTATS_ARENA_WARS_SPECTATOR = function(p0, p1, p2, p3, p4) invoker.call(0x6F4F599753F8200A, p0, p1, p2, p3, p4) end,
	---  
	PLAYSTATS_ARENA_WARS_ENDED = function(data) invoker.call(0xB479D9F0D48A1BC5, data) end,
	---  
	PLAYSTATS_SWITCH_PASSIVE_MODE = function(p0, p1, p2, p3) invoker.call(0x35EEC6C2BC821A71, p0, p1, p2, p3) end,
	---  
	PLAYSTATS_COLLECTIBLE_PICKED_UP = function(p0, objectHash, p2, p3, moneyAmount, rpAmount, chipsAmount, p7, p8, p9, p10) invoker.call(0xCD0A8A9338681CF2, p0, objectHash, p2, p3, moneyAmount, rpAmount, chipsAmount, p7, p8, p9, p10) end,
	---  
	PLAYSTATS_CASINO_STORY_MISSION_ENDED = function(p0, p1) invoker.call(0xFCCCAC2BD3C1F180, p0, p1) end,
	---  
	PLAYSTATS_CASINO_CHIP = function(p0) invoker.call(0x0999F3F090EC5012, p0) end,
	---  
	PLAYSTATS_CASINO_ROULETTE = function(p0) invoker.call(0x95101C443A84E7F1, p0) end,
	---  
	PLAYSTATS_CASINO_BLACKJACK = function(p0) invoker.call(0x3EAE97309727E7AD, p0) end,
	---  
	PLAYSTATS_CASINO_THREE_CARD_POKER = function(p0) invoker.call(0xF740FB339D471C35, p0) end,
	---  
	PLAYSTATS_CASINO_SLOT_MACHINE = function(p0) invoker.call(0xEF5EC67D392B830A, p0) end,
	---  
	PLAYSTATS_CASINO_INSIDE_TRACK = function(p0) invoker.call(0x049F059625058A86, p0) end,
	---  
	PLAYSTATS_CASINO_LUCKY_SEVEN = function(p0) invoker.call(0x0C432C1435F5E4FA, p0) end,
	---  
	PLAYSTATS_CASINO_ROULETTE_LIGHT = function(p0) invoker.call(0x6572ABA3DE1197FC, p0) end,
	---  
	PLAYSTATS_CASINO_BLACKJACK_LIGHT = function(p0) invoker.call(0xD5451C7BF151EB6F, p0) end,
	---  
	PLAYSTATS_CASINO_THREE_CARD_POKER_LIGHT = function(p0) invoker.call(0xC9001364B4388F22, p0) end,
	---  
	PLAYSTATS_CASINO_SLOT_MACHINE_LIGHT = function(p0) invoker.call(0xE60054A0FAE8227F, p0) end,
	---  
	PLAYSTATS_CASINO_INSIDE_TRACK_LIGHT = function(p0) invoker.call(0x23A3CBCD50D54E47, p0) end,
	---  
	PLAYSTATS_ARCADE_GAME = function(p0, p1, p2, p3, p4, p5, p6) invoker.call(0x533A7D1EA58DF958, p0, p1, p2, p3, p4, p5, p6) end,
	---  
	PLAYSTATS_ARCADE_LOVE_MATCH = function(p0, p1) invoker.call(0x4FCDBD3F0A813C25, p0, p1) end,
	---  
	PLAYSTATS_FREEMODE_CASINO_MISSION_ENDED = function(data) invoker.call(0x1A0D4A6C336B7BC5, data) end,
	---  
	PLAYSTATS_HEIST3_DRONE = function(p0) invoker.call(0xDFBD93BF2943E29B, p0) end,
	---  
	PLAYSTATS_HEIST3_HACK = function(p0, p1, p2, p3, p4, p5) invoker.call(0x92FC0EEDFAC04A14, p0, p1, p2, p3, p4, p5) end,
	---  
	PLAYSTATS_NPC_PHONE = function(p0) invoker.call(0x0077F15613D36993, p0) end,
	---  
	PLAYSTATS_ARCADE_CABINET = function(p0) invoker.call(0xF9096193DF1F99D4, p0) end,
	---  
	PLAYSTATS_HEIST3_FINALE = function(p0) invoker.call(0x2E0259BABC27A327, p0) end,
	---  
	PLAYSTATS_HEIST3_PREP = function(p0) invoker.call(0x53C31853EC9531FF, p0) end,
	---  
	PLAYSTATS_MASTER_CONTROL = function(p0, p1, p2, p3, p4) invoker.call(0x810B5FCC52EC7FF0, p0, p1, p2, p3, p4) end,
	---  
	PLAYSTATS_QUIT_MODE = function(p0, p1, p2, p3, p4) invoker.call(0x5BF29846C6527C54, p0, p1, p2, p3, p4) end,
	---  
	PLAYSTATS_MISSION_VOTE = function(p0) invoker.call(0xC03FAB2C2F92289B, p0) end,
	---  
	PLAYSTATS_NJVS_VOTE = function(p0) invoker.call(0x5CDAED54B34B0ED0, p0) end,
	---  
	_PLAYSTATS_DEATH_INFO = function(victimPed, killerPed, mentalState, revengeKill, victimKvK, killerKvK) invoker.call(0x01D8B04D02F1217F, victimPed, killerPed, mentalState, revengeKill, victimKvK, killerKvK) end,
	---  
	PLAYSTATS_FM_MISSION_END = function(p0, p1, p2, p3) invoker.call(0x46A70777BE6CEAB9, p0, p1, p2, p3) end,
	---  
	PLAYSTATS_HEIST4_PREP = function(p0) invoker.call(0xDFCDB14317A9B361, p0) end,
	---  
	PLAYSTATS_HEIST4_FINALE = function(p0) invoker.call(0xC1E963C58664B556, p0) end,
	---  
	PLAYSTATS_HEIST4_HACK = function(p0, p1, p2, p3, p4) invoker.call(0x2FA3173480008493, p0, p1, p2, p3, p4) end,
	---  
	PLAYSTATS_SUB_WEAP = function(p0, p1, p2, p3) invoker.call(0xD4367D310F079DB0, p0, p1, p2, p3) end,
	---  
	PLAYSTATS_FAST_TRVL = function(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10) invoker.call(0x4DC416F246A41FC8, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10) end,
	---  
	PLAYSTATS_HUB_ENTRY = function(p0) invoker.call(0x2818FF6638CB09DE, p0) end,
	---  
	PLAYSTATS_DJ_MISSION_ENDED = function(p0) invoker.call(0xD6CA58B3B53A0F22, p0) end,
	---  
	PLAYSTATS_ROBBERY_PREP = function(p0) invoker.call(0x1A67DFBF1F5C3835, p0) end,
	---  
	PLAYSTATS_ROBBERY_FINALE = function(p0) invoker.call(0xBBA55BE9AAAABF44, p0) end,
	---  
	PLAYSTATS_EXTRA_EVENT = function(p0) invoker.call(0xFA5B74BAB8A7EF99, p0) end,
	---  
	PLAYSTATS_CARCLUB_POINTS = function(p0) invoker.call(0xFF14D6FEEC507BBE, p0) end,
	---  
	PLAYSTATS_CARCLUB_CHALLENGE = function(p0, p1, p2, p3) invoker.call(0x1187CB58D7F3BED7, p0, p1, p2, p3) end,
	---  
	PLAYSTATS_CARCLUB_PRIZE = function(p0, vehicleModel) invoker.call(0x69C922B677621428, p0, vehicleModel) end,
	---  
	PLAYSTATS_AWARD_NAV = function(p0, p1, p2, p3) invoker.call(0x70F52471E758EBAE, p0, p1, p2, p3) end,
	---  
	_PLAYSTATS_INIT_MULTIPLAYER = function(p0, p1, p2) invoker.call(0x7E5EED10B11CEDBA, p0, p1, p2) end,
	---  
	PLAYSTATS_INST_MISSION_END = function(p0) invoker.call(0xFEA3F7E83C0610FA, p0) end,
	---  
	PLAYSTATS_HUB_EXIT = function(p0) invoker.call(0x5A46ACE5C4661132, p0) end,
	---  
	PLAYSTATS_LP_NAV = function(data) invoker.call(0x3019851E2CF1B047, data) end,
	---  
	_PLAYSTATS_LP_SUBTILE = function(p0, p1, p2, p3, p4) invoker.call(0xD4E1FE520138900B, p0, p1, p2, p3, p4) end,
	---  
	PLAYSTATS_VEH_DEL = function(bossId1, bossId2, bossType, vehicleID, reason) invoker.call(0x10A691F5756416D0, bossId1, bossId2, bossType, vehicleID, reason) end,
	---  
	PLAYSTATS_INVENTORY = function(p0) invoker.call(0x887DAD63CF5B7908, p0) end,
	---  
	_PLAYSTATS_ACID_MISSION_END = function(p0) invoker.call(0x8A23D1324F6B2BAC, p0) end,
	---  
	_PLAYSTATS_ACID_RND = function(p0) invoker.call(0xCEACCF0550FDC5BA, p0) end,
	---  
	_PLAYSTATS_IDLE = function(p0, p1, p2) invoker.call(0xEC9553A178E8F1D1, p0, p1, p2) end,
	---  
	_PLAYSTATS_PLAYER_STYLE = function(p0) invoker.call(0x48FAC5DC7AC6EA99, p0) end,
	---  
	_PLAYSTATS_RANDOM_EVENT = function(p0) invoker.call(0x7EA06F970F999394, p0) end,
	---  
	_PLAYSTATS_PH_SNAPSHOT = function(p0) invoker.call(0x47506D5327297364, p0) end,
	---  
	_PLAYSTATS_PH_PROGRESS_TIERS = function(p0) invoker.call(0x0466968813A9FFE2, p0) end,
	---  
	_PLAYSTATS_PH_NAV = function(p0) invoker.call(0x681672A1F5F17EF9, p0) end,
	---  
	_PLAYSTATS_PH_ACTIVITY = function(p0, p1, p2, p3, p4, p5, p6, p7) invoker.call(0x9C4B3BAF947660BB, p0, p1, p2, p3, p4, p5, p6, p7) end,
	---  
	_PLAYSTATS_PH_PROGRESS_OBJECTIVES = function(p0) invoker.call(0xFEF378E70D9AE59C, p0) end,
	---  
	_PLAYSTATS_ALERT = function(data) invoker.call(0x5649CA22AF74E019, data) end,
	---  
	_PLAYSTATS_ATTRITION_STAGE_END = function(p0) invoker.call(0xBD642335A732F1A8, p0) end,
	---  
	_PLAYSTATS_SHOWROOM_NAV = function(p0, p1, entity) invoker.call(0x961D4157B9B428DB, p0, p1, entity) end,
	---Data struct contains various tunables related to test drives at Simeons Showroom or Luxury Showcase.  
	_PLAYSTATS_SHOWROOM_OVERVIEW = function(data) invoker.call(0x151D6C04C9E2742F, data) end,
	---  
	_PLAYSTATS_PIMENU_NAV = function(data) invoker.call(0xE6D323A5E9EFFB76, data) end,
	---  
	_PLAYSTATS_RECOVER_VEHICLE = function(data) invoker.call(0xBEB0D930B3CCE4D5, data) end,
	---  
	_PLAYSTATS_SCRIPT_EVENT_FPOM = function(data) invoker.call(0x574A7808450E141C, data) end,
}
STREAMING={
	LOAD_ALL_OBJECTS_NOW = function() invoker.call(0xBD6E84632DD4CB3F) end,
	---  
	LOAD_SCENE = function(x, y, z) invoker.call(0x4448EB75B4904BDB, x, y, z) end,
	---  
	NETWORK_UPDATE_LOAD_SCENE = function() return invoker.call(0xC4582015556D1C46).bool end,
	---  
	IS_NETWORK_LOADING_SCENE = function() return invoker.call(0x41CA5A33160EA4AB).bool end,
	---  
	SET_INTERIOR_ACTIVE = function(interiorID, toggle) invoker.call(0xE37B76C387BE28ED, interiorID, toggle) end,
	---Request a model to be loaded into memory.  
	---  
	REQUEST_MODEL = function(model) invoker.call(0x963D27A58DF860AC, model) end,
	---  
	REQUEST_MENU_PED_MODEL = function(model) invoker.call(0xA0261AEF7ACFC51E, model) end,
	---Checks if the specified model has loaded into memory.  
	HAS_MODEL_LOADED = function(model) return invoker.call(0x98A4EB5D89A0C952, model).bool end,
	---STREAMING::REQUEST_MODELS_IN_ROOM(l_13BC, "V_FIB01_cur_elev");  
	---STREAMING::REQUEST_MODELS_IN_ROOM(l_13BC, "limbo");  
	---STREAMING::REQUEST_MODELS_IN_ROOM(l_13BB, "V_Office_gnd_lifts");  
	---STREAMING::REQUEST_MODELS_IN_ROOM(l_13BB, "limbo");  
	---STREAMING::REQUEST_MODELS_IN_ROOM(l_13BC, "v_fib01_jan_elev");  
	---STREAMING::REQUEST_MODELS_IN_ROOM(l_13BC, "limbo");  
	REQUEST_MODELS_IN_ROOM = function(interior, roomName) invoker.call(0x8A7A40100EDFEC58, interior, roomName) end,
	---Unloads model from memory  
	SET_MODEL_AS_NO_LONGER_NEEDED = function(model) invoker.call(0xE532F5D78798DAAB, model) end,
	---Check if model is in cdimage(rpf)  
	IS_MODEL_IN_CDIMAGE = function(model) return invoker.call(0x35B9E0803292B641, model).bool end,
	---Returns whether the specified model exists in the game.  
	IS_MODEL_VALID = function(model) return invoker.call(0xC0296A2EDF545E92, model).bool end,
	---  
	IS_MODEL_A_PED = function(model) return invoker.call(0x75816577FEA6DAD5, model).bool end,
	---Returns whether the specified model represents a vehicle.  
	IS_MODEL_A_VEHICLE = function(model) return invoker.call(0x19AAC8F07BFEC53E, model).bool end,
	---  
	REQUEST_COLLISION_AT_COORD = function(x, y, z) invoker.call(0x07503F7948F491A7, x, y, z) end,
	---  
	REQUEST_COLLISION_FOR_MODEL = function(model) invoker.call(0x923CB32A3B874FCB, model) end,
	---  
	HAS_COLLISION_FOR_MODEL_LOADED = function(model) return invoker.call(0x22CCA434E368F03A, model).bool end,
	---Alias of REQUEST_COLLISION_AT_COORD.  
	REQUEST_ADDITIONAL_COLLISION_AT_COORD = function(x, y, z) invoker.call(0xC9156DC11411A9EA, x, y, z) end,
	---Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json  
	DOES_ANIM_DICT_EXIST = function(animDict) return invoker.call(0x2DA49C3B79856961, animDict).bool end,
	---Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json  
	REQUEST_ANIM_DICT = function(animDict) invoker.call(0xD3BD40951412FEF6, animDict) end,
	---Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json  
	HAS_ANIM_DICT_LOADED = function(animDict) return invoker.call(0xD031A9162D01088C, animDict).bool end,
	---Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json  
	REMOVE_ANIM_DICT = function(animDict) invoker.call(0xF66A602F829E2A06, animDict) end,
	---Starts loading the specified animation set. An animation set provides movement animations for a ped. See SET_PED_MOVEMENT_CLIPSET.  
	---  
	---Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json  
	---  
	---Full list of movement clipsets by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/movementClipsetsCompact.json  
	REQUEST_ANIM_SET = function(animSet) invoker.call(0x6EA47DAE7FAD0EED, animSet) end,
	---Gets whether the specified animation set has finished loading. An animation set provides movement animations for a ped. See SET_PED_MOVEMENT_CLIPSET.  
	---  
	---Animation set and clip set are synonymous.  
	---  
	---Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json  
	---  
	---Full list of movement clipsets by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/movementClipsetsCompact.json  
	HAS_ANIM_SET_LOADED = function(animSet) return invoker.call(0xC4EA073D86FB29B0, animSet).bool end,
	---Unloads the specified animation set. An animation set provides movement animations for a ped. See SET_PED_MOVEMENT_CLIPSET.  
	---  
	---Animation set and clip set are synonymous.  
	---  
	---Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json  
	---  
	---Full list of movement clipsets by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/movementClipsetsCompact.json  
	REMOVE_ANIM_SET = function(animSet) invoker.call(0x16350528F93024B3, animSet) end,
	---Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json  
	---  
	---Full list of movement clipsets by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/movementClipsetsCompact.json  
	REQUEST_CLIP_SET = function(clipSet) invoker.call(0xD2A71E1A77418A49, clipSet) end,
	---Alias for HAS_ANIM_SET_LOADED.  
	---  
	---Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json  
	---  
	---Full list of movement clipsets by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/movementClipsetsCompact.json  
	HAS_CLIP_SET_LOADED = function(clipSet) return invoker.call(0x318234F4F3738AF3, clipSet).bool end,
	---Alias for REMOVE_ANIM_SET.  
	---  
	---Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json  
	---  
	---Full list of movement clipsets by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/movementClipsetsCompact.json  
	REMOVE_CLIP_SET = function(clipSet) invoker.call(0x01F73A131C18CD94, clipSet) end,
	---Exemple: REQUEST_IPL("TrevorsTrailerTrash");  
	---  
	---Full list of IPLs and interior entity sets by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/ipls.json  
	REQUEST_IPL = function(iplName) invoker.call(0x41B4893843BBDB74, iplName) end,
	---Removes an IPL from the map.  
	---  
	---Full list of IPLs and interior entity sets by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/ipls.json  
	---  
	---Example:  
	---C#:  
	---Function.Call(Hash.REMOVE_IPL, "trevorstrailertidy");  
	---  
	---C++:  
	---STREAMING::REMOVE_IPL("trevorstrailertidy");  
	---  
	---iplName = Name of IPL you want to remove.  
	REMOVE_IPL = function(iplName) invoker.call(0xEE6C5AD3ECE0A82D, iplName) end,
	---Full list of IPLs and interior entity sets by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/ipls.json  
	IS_IPL_ACTIVE = function(iplName) return invoker.call(0x88A741E44A2B3495, iplName).bool end,
	---  
	SET_STREAMING = function(toggle) invoker.call(0x6E0C692677008888, toggle) end,
	---0 - default  
	---1 - HeistIsland  
	LOAD_GLOBAL_WATER_FILE = function(waterType) invoker.call(0x7E3F55ED251B76D3, waterType) end,
	---  
	GET_GLOBAL_WATER_FILE = function() return invoker.call(0xF741BD853611592D).int end,
	---  
	SET_GAME_PAUSES_FOR_STREAMING = function(toggle) invoker.call(0x717CD6E6FAEBBEDC, toggle) end,
	---  
	SET_REDUCE_PED_MODEL_BUDGET = function(toggle) invoker.call(0x77B5F9A36BF96710, toggle) end,
	---  
	SET_REDUCE_VEHICLE_MODEL_BUDGET = function(toggle) invoker.call(0x80C527893080CCF3, toggle) end,
	---This is a NOP function. It does nothing at all.  
	SET_DITCH_POLICE_MODELS = function(toggle) invoker.call(0x42CBE54462D92634, toggle) end,
	---  
	GET_NUMBER_OF_STREAMING_REQUESTS = function() return invoker.call(0x4060057271CEBC89).int end,
	---maps script name (thread + 0xD0) by lookup via scriptfx.dat - does nothing when script name is empty  
	REQUEST_PTFX_ASSET = function() invoker.call(0x944955FB2A3935C8) end,
	---  
	HAS_PTFX_ASSET_LOADED = function() return invoker.call(0xCA7D9B86ECA7481B).bool end,
	---  
	REMOVE_PTFX_ASSET = function() invoker.call(0x88C6814073DD4A73) end,
	--- From the b678d decompiled scripts:  
	---  
	--- STREAMING::REQUEST_NAMED_PTFX_ASSET("core_snow");  
	--- STREAMING::REQUEST_NAMED_PTFX_ASSET("fm_mission_controler");  
	--- STREAMING::REQUEST_NAMED_PTFX_ASSET("proj_xmas_firework");  
	--- STREAMING::REQUEST_NAMED_PTFX_ASSET("scr_apartment_mp");  
	--- STREAMING::REQUEST_NAMED_PTFX_ASSET("scr_biolab_heist");  
	--- STREAMING::REQUEST_NAMED_PTFX_ASSET("scr_indep_fireworks");  
	--- STREAMING::REQUEST_NAMED_PTFX_ASSET("scr_indep_parachute");  
	--- STREAMING::REQUEST_NAMED_PTFX_ASSET("scr_indep_wheelsmoke");  
	--- STREAMING::REQUEST_NAMED_PTFX_ASSET("scr_mp_cig_plane");  
	--- STREAMING::REQUEST_NAMED_PTFX_ASSET("scr_mp_creator");  
	--- STREAMING::REQUEST_NAMED_PTFX_ASSET("scr_mp_tankbattle");  
	--- STREAMING::REQUEST_NAMED_PTFX_ASSET("scr_ornate_heist");  
	--- STREAMING::REQUEST_NAMED_PTFX_ASSET("scr_prison_break_heist_station");  
	REQUEST_NAMED_PTFX_ASSET = function(fxName) invoker.call(0xB80D8756B4668AB6, fxName) end,
	---  
	HAS_NAMED_PTFX_ASSET_LOADED = function(fxName) return invoker.call(0x8702416E512EC454, fxName).bool end,
	---  
	REMOVE_NAMED_PTFX_ASSET = function(fxName) invoker.call(0x5F61EBBE1A00F96D, fxName) end,
	---  
	SET_VEHICLE_POPULATION_BUDGET = function(p0) invoker.call(0xCB9E1EB3BE2AF4E9, p0) end,
	---Control how many new (ambient?) peds will spawn in the game world.  
	---Range for p0 seems to be 0-3, where 0 is none and 3 is the normal level.  
	SET_PED_POPULATION_BUDGET = function(p0) invoker.call(0x8C95333CFC3340F3, p0) end,
	---  
	CLEAR_FOCUS = function() invoker.call(0x31B73D1EA9F01DA2) end,
	---Override the area where the camera will render the terrain.  
	---p3, p4 and p5 are usually set to 0.0  
	---  
	SET_FOCUS_POS_AND_VEL = function(x, y, z, offsetX, offsetY, offsetZ) invoker.call(0xBB7454BAFF08FE25, x, y, z, offsetX, offsetY, offsetZ) end,
	---It seems to make the entity's coords mark the point from which LOD-distances are measured. In my testing, setting a vehicle as the focus entity and moving that vehicle more than 300 distance units away from the player will make the level of detail around the player go down drastically (shadows disappear, textures go extremely low res, etc). The player seems to be the default focus entity.  
	SET_FOCUS_ENTITY = function(entity) invoker.call(0x198F77705FA0931D, entity) end,
	---  
	IS_ENTITY_FOCUS = function(entity) return invoker.call(0x2DDFF3FB9075D747, entity).bool end,
	---  
	SET_RESTORE_FOCUS_ENTITY = function(p0) invoker.call(0x0811381EF5062FEC, p0) end,
	---Possible p0 values:  
	---  
	---"prologue"  
	---"Prologue_Main"  
	SET_MAPDATACULLBOX_ENABLED = function(name, toggle) invoker.call(0xAF12610C644A35C9, name, toggle) end,
	---This native does absolutely nothing, just a nullsub  
	SET_ALL_MAPDATA_CULLED = function(p0) invoker.call(0x4E52E752C76E7E7A, p0) end,
	---Always returns zero.  
	STREAMVOL_CREATE_SPHERE = function(x, y, z, rad, p4, p5) return invoker.call(0x219C7B8D53E429FD, x, y, z, rad, p4, p5).int end,
	---Always returns zero.  
	STREAMVOL_CREATE_FRUSTUM = function(p0, p1, p2, p3, p4, p5, p6, p7, p8) return invoker.call(0x1F3F018BC3AFA77C, p0, p1, p2, p3, p4, p5, p6, p7, p8).int end,
	---Always returns zero.  
	STREAMVOL_CREATE_LINE = function(p0, p1, p2, p3, p4, p5, p6) return invoker.call(0x0AD9710CEE2F590F, p0, p1, p2, p3, p4, p5, p6).int end,
	---  
	STREAMVOL_DELETE = function(unused) invoker.call(0x1EE7D8DF4425F053, unused) end,
	---  
	STREAMVOL_HAS_LOADED = function(unused) return invoker.call(0x7D41E9D2D17C5B2D, unused).bool end,
	---  
	STREAMVOL_IS_VALID = function(unused) return invoker.call(0x07C313F94746702C, unused).bool end,
	---  
	IS_STREAMVOL_ACTIVE = function() return invoker.call(0xBC9823AB80A3DCAC).bool end,
	---`radius` value is usually between `3f` and `7000f` in original 1868 scripts.  
	---`p7` is 0, 1, 2, 3 or 4 used in decompiled scripts, 0 is by far the most common.  
	---Returns True if success, used only 7 times in decompiled scripts of 1868  
	NEW_LOAD_SCENE_START = function(posX, posY, posZ, offsetX, offsetY, offsetZ, radius, p7) return invoker.call(0x212A8D0D2BABFAC2, posX, posY, posZ, offsetX, offsetY, offsetZ, radius, p7).bool end,
	---  
	NEW_LOAD_SCENE_START_SPHERE = function(x, y, z, radius, p4) return invoker.call(0xACCFB4ACF53551B0, x, y, z, radius, p4).bool end,
	---  
	NEW_LOAD_SCENE_STOP = function() invoker.call(0xC197616D221FF4A4) end,
	---  
	IS_NEW_LOAD_SCENE_ACTIVE = function() return invoker.call(0xA41A05B6CB741B85).bool end,
	---  
	IS_NEW_LOAD_SCENE_LOADED = function() return invoker.call(0x01B8247A7A8B9AD1).bool end,
	---  
	IS_SAFE_TO_START_PLAYER_SWITCH = function() return invoker.call(0x71E7B2E657449AAD).bool end,
	---// this enum comes directly from R* so don't edit this  
	---enum ePlayerSwitchTypes  
	---{  
	---  SWITCH_TYPE_AUTO,  
	--- SWITCH_TYPE_LONG,  
	--- SWITCH_TYPE_MEDIUM,  
	---   SWITCH_TYPE_SHORT  
	---};  
	---  
	---Use GET_IDEAL_PLAYER_SWITCH_TYPE for the best switch type.  
	---  
	-------------------------------------------------------  
	---  
	---Examples from the decompiled scripts:  
	---  
	---STREAMING::START_PLAYER_SWITCH(l_832._f3, PLAYER::PLAYER_PED_ID(), 0, 3);  
	---STREAMING::START_PLAYER_SWITCH(l_832._f3, PLAYER::PLAYER_PED_ID(), 2050, 3);  
	---STREAMING::START_PLAYER_SWITCH(PLAYER::PLAYER_PED_ID(), l_832._f3, 1024, 3);  
	---STREAMING::START_PLAYER_SWITCH(g_141F27, PLAYER::PLAYER_PED_ID(), 513, v_14);  
	---  
	---Note: DO NOT, use SWITCH_TYPE_LONG with flag 513. It leaves you stuck in the clouds. You'll have to call STOP_PLAYER_SWITCH() to return to your ped.  
	---  
	---Flag 8 w/ SWITCH_TYPE_LONG will zoom out 3 steps, then zoom in 2/3 steps and stop on the 3rd and just hang there.  
	---Flag 8 w/ SWITCH_TYPE_MEDIUM will zoom out 1 step, and just hang there.  
	START_PLAYER_SWITCH = function(from, to, flags, switchType) invoker.call(0xFAA23F2CBA159D67, from, to, flags, switchType) end,
	---  
	STOP_PLAYER_SWITCH = function() invoker.call(0x95C0A5BBDC189AA1) end,
	---Returns true if the player is currently switching, false otherwise.  
	---(When the camera is in the sky moving from Trevor to Franklin for example)  
	IS_PLAYER_SWITCH_IN_PROGRESS = function() return invoker.call(0xD9D2CFFF49FAB35F).bool end,
	---  
	GET_PLAYER_SWITCH_TYPE = function() return invoker.call(0xB3C94A90D9FC9E62).int end,
	---x1, y1, z1 -- Coords of your ped model  
	---x2, y2, z2 -- Coords of the ped you want to switch to  
	GET_IDEAL_PLAYER_SWITCH_TYPE = function(x1, y1, z1, x2, y2, z2) return invoker.call(0xB5D7B26B45720E05, x1, y1, z1, x2, y2, z2).int end,
	---  
	GET_PLAYER_SWITCH_STATE = function() return invoker.call(0x470555300D10B2A5).int end,
	---  
	GET_PLAYER_SHORT_SWITCH_STATE = function() return invoker.call(0x20F898A5D9782800).int end,
	---  
	SET_PLAYER_SHORT_SWITCH_STYLE = function(p0) invoker.call(0x5F2013F8BC24EE69, p0) end,
	---  
	GET_PLAYER_SWITCH_JUMP_CUT_INDEX = function() return invoker.call(0x78C0D93253149435).int end,
	---  
	SET_PLAYER_SWITCH_OUTRO = function(cameraCoordX, cameraCoordY, cameraCoordZ, camRotationX, camRotationY, camRotationZ, camFov, camFarClip, rotationOrder) invoker.call(0xC208B673CE446B61, cameraCoordX, cameraCoordY, cameraCoordZ, camRotationX, camRotationY, camRotationZ, camFov, camFarClip, rotationOrder) end,
	---All names can be found in playerswitchestablishingshots.meta  
	SET_PLAYER_SWITCH_ESTABLISHING_SHOT = function(name) invoker.call(0x0FDE9DBFC0A6BC65, name) end,
	---  
	ALLOW_PLAYER_SWITCH_PAN = function() invoker.call(0x43D1680C6D19A8E9) end,
	---  
	ALLOW_PLAYER_SWITCH_OUTRO = function() invoker.call(0x74DE2E8739086740) end,
	---  
	ALLOW_PLAYER_SWITCH_ASCENT = function() invoker.call(0x8E2A065ABDAE6994) end,
	---  
	ALLOW_PLAYER_SWITCH_DESCENT = function() invoker.call(0xAD5FDF34B81BFE79) end,
	---  
	IS_SWITCH_READY_FOR_DESCENT = function() return invoker.call(0xDFA80CB25D0A19B3).bool end,
	---  
	ENABLE_SWITCH_PAUSE_BEFORE_DESCENT = function() invoker.call(0xD4793DFF3AF2ABCD) end,
	---  
	DISABLE_SWITCH_OUTRO_FX = function() invoker.call(0xBD605B8E0E18B3BB) end,
	---doesn't act normally when used on mount chilliad  
	---Flags is a bitflag:  
	---2^n - Enabled Functionality:  
	---0 - Skip camera rotate up  
	---3 - Wait for SET_PLAYER_SWITCH_ESTABLISHING_SHOT / hang at last step. You will still need to run 0x74DE2E8739086740 to exit "properly" and then STOP_PLAYER_SWITCH  
	---6 - Invert Switch Direction (false = out, true = in)  
	---8 - Hang above ped  
	---  
	---switchType: 0 - 3  
	---0: 1 step towards ped  
	---1: 3 steps out from ped  
	---2: 1 step out from ped  
	---3: 1 step towards ped  
	SWITCH_TO_MULTI_FIRSTPART = function(ped, flags, switchType) invoker.call(0xAAB3200ED59016BC, ped, flags, switchType) end,
	---  
	SWITCH_TO_MULTI_SECONDPART = function(ped) invoker.call(0xD8295AF639FD9CB8, ped) end,
	---  
	IS_SWITCH_TO_MULTI_FIRSTPART_FINISHED = function() return invoker.call(0x933BBEEB8C61B5F4).bool end,
	---  
	GET_PLAYER_SWITCH_INTERP_OUT_DURATION = function() return invoker.call(0x08C2D6C52A3104BB).int end,
	---  
	GET_PLAYER_SWITCH_INTERP_OUT_CURRENT_TIME = function() return invoker.call(0x5B48A06DD0E792A5).int end,
	---  
	IS_SWITCH_SKIPPING_DESCENT = function() return invoker.call(0x5B74EA8CFD5E3E7E).bool end,
	---  
	SET_SCENE_STREAMING_TRACKS_CAM_POS_THIS_FRAME = function() invoker.call(0x1E9057A74FD73E23) end,
	---  
	GET_LODSCALE = function() return invoker.call(0x0C15B0E443B2349D).float end,
	---This allows you to override "extended distance scaling" setting. Needs to be called each frame.  
	---Max scaling seems to be 200.0, normal is 1.0  
	---See https://gfycat.com/DetailedHauntingIncatern  
	OVERRIDE_LODSCALE_THIS_FRAME = function(scaling) invoker.call(0xA76359FC80B2438E, scaling) end,
	---  
	REMAP_LODSCALE_RANGE_THIS_FRAME = function(p0, p1, p2, p3) invoker.call(0xBED8CA5FF5E04113, p0, p1, p2, p3) end,
	---  
	SUPPRESS_HD_MAP_STREAMING_THIS_FRAME = function() invoker.call(0x472397322E92A856) end,
	---  
	SET_RENDER_HD_ONLY = function(toggle) invoker.call(0x40AEFD1A244741F2, toggle) end,
	---  
	FORCE_ALLOW_TIME_BASED_FADING_THIS_FRAME = function() invoker.call(0x03F1A106BDA7DD3E) end,
	---  
	IPL_GROUP_SWAP_START = function(iplName1, iplName2) invoker.call(0x95A7DABDDBB78AE7, iplName1, iplName2) end,
	---  
	IPL_GROUP_SWAP_CANCEL = function() invoker.call(0x63EB2B972A218CAC) end,
	---  
	IPL_GROUP_SWAP_IS_READY = function() return invoker.call(0xFB199266061F820A).bool end,
	---  
	IPL_GROUP_SWAP_FINISH = function() invoker.call(0xF4A0DADB70F57FA6) end,
	---  
	IPL_GROUP_SWAP_IS_ACTIVE = function() return invoker.call(0x5068F488DDB54DD8).bool end,
	---This native is used to attribute the SRL that BEGIN_SRL is going to load. This is usually used for 'in-game' cinematics (not cutscenes but camera stuff) instead of SET_FOCUS_POS_AND_VEL because it loads a specific area of the map which is pretty useful when the camera moves from distant areas.  
	---For instance, GTA:O opening cutscene.  
	---https://pastebin.com/2EeKVeLA : a list of SRL found in srllist.meta  
	---https://pastebin.com/zd9XYUWY here is the content of a SRL file opened with codewalker.  
	PREFETCH_SRL = function(srl) invoker.call(0x3D245789CE12982C, srl) end,
	---Returns true when the srl from BEGIN_SRL is loaded.  
	IS_SRL_LOADED = function() return invoker.call(0xD0263801A4C5B0BB).bool end,
	---  
	BEGIN_SRL = function() invoker.call(0x9BADDC94EF83B823) end,
	---Clear the current srl and stop rendering the area selected by PREFETCH_SRL and started with BEGIN_SRL.  
	END_SRL = function() invoker.call(0x0A41540E63C9EE17) end,
	---  
	SET_SRL_TIME = function(p0) invoker.call(0xA74A541C6884E7B8, p0) end,
	---  
	SET_SRL_POST_CUTSCENE_CAMERA = function(p0, p1, p2, p3, p4, p5) invoker.call(0xEF39EE20C537E98C, p0, p1, p2, p3, p4, p5) end,
	---  
	SET_SRL_READAHEAD_TIMES = function(p0, p1, p2, p3) invoker.call(0xBEB2D9A1D9A8F55A, p0, p1, p2, p3) end,
	---  
	SET_SRL_LONG_JUMP_MODE = function(p0) invoker.call(0x20C6C7E4EB082A7F, p0) end,
	---  
	SET_SRL_FORCE_PRESTREAM = function(p0) invoker.call(0xF8155A7F03DDFC8E, p0) end,
	---  
	SET_HD_AREA = function(x, y, z, radius) invoker.call(0xB85F26619073E775, x, y, z, radius) end,
	---  
	CLEAR_HD_AREA = function() invoker.call(0xCE58B1CFB9290813) end,
	---  
	INIT_CREATOR_BUDGET = function() invoker.call(0xB5A4DB34FE89B88A) end,
	---  
	SHUTDOWN_CREATOR_BUDGET = function() invoker.call(0xCCE26000E9A6FAD7) end,
	---  
	ADD_MODEL_TO_CREATOR_BUDGET = function(modelHash) return invoker.call(0x0BC3144DEB678666, modelHash).bool end,
	---  
	REMOVE_MODEL_FROM_CREATOR_BUDGET = function(modelHash) invoker.call(0xF086AD9354FAC3A3, modelHash) end,
	---0.0 = no memory used  
	---1.0 = all memory used  
	---  
	---Maximum model memory (as defined in common\data\missioncreatordata.meta) is 100 MiB  
	GET_USED_CREATOR_BUDGET = function() return invoker.call(0x3D3D8B3BE5A83D35).float end,
	---Enables the specified island. For more information, see islandhopper.meta  
	SET_ISLAND_ENABLED = function(name, toggle) invoker.call(0x9A9D1BA639675CF1, name, toggle) end,
	---  
	IS_GAME_INSTALLED = function() return invoker.call(0x7F87B6CE3D8D9DD8).bool end,
}
TASK={
	---Stand still (?)  
	TASK_PAUSE = function(ped, ms) invoker.call(0xE73A266DB0CA9042, ped, ms) end,
	---Makes the specified ped stand still for (time) milliseconds.  
	TASK_STAND_STILL = function(ped, time) invoker.call(0x919BE13EED931959, ped, time) end,
	---Definition is wrong. This has 4 parameters (Not sure when they were added. v350 has 2, v678 has 4).  
	---  
	---v350: Ped ped, bool unused  
	---v678: Ped ped, bool unused, bool flag1, bool flag2  
	---  
	---flag1 = super jump, flag2 = do nothing if flag1 is false and doubles super jump height if flag1 is true.  
	TASK_JUMP = function(ped, usePlayerLaunchForce, doSuperJump, useFullSuperJumpForce) invoker.call(0x0AE4086104E067B1, ped, usePlayerLaunchForce, doSuperJump, useFullSuperJumpForce) end,
	---  
	TASK_COWER = function(ped, duration) invoker.call(0x3EB1FE9E8E908E15, ped, duration) end,
	---In the scripts, p3 was always -1.  
	---  
	---p3 seems to be duration or timeout of turn animation.  
	---Also facingPed can be 0 or -1 so ped will just raise hands up.  
	TASK_HANDS_UP = function(ped, duration, facingPed, timeToFacePed, flags) invoker.call(0xF2EAB31979A7F910, ped, duration, facingPed, timeToFacePed, flags) end,
	---  
	UPDATE_TASK_HANDS_UP_DURATION = function(ped, duration) invoker.call(0xA98FCAFD7893C834, ped, duration) end,
	---The given ped will try to open the nearest door to 'seat'.  
	---Example: telling the ped to open the door for the driver seat does not necessarily mean it will open the driver door, it may choose to open the passenger door instead if that one is closer.  
	TASK_OPEN_VEHICLE_DOOR = function(ped, vehicle, timeOut, seat, speed) invoker.call(0x965791A9A488A062, ped, vehicle, timeOut, seat, speed) end,
	---speed 1.0 = walk, 2.0 = run  
	---p5 1 = normal, 3 = teleport to vehicle, 16 = teleport directly into vehicle  
	---p6 is always 0  
	---  
	---Usage of seat   
	----1 = driver  
	---0 = passenger  
	---1 = left back seat  
	---2 = right back seat  
	---3 = outside left  
	---4 = outside right  
	TASK_ENTER_VEHICLE = function(ped, vehicle, timeout, seat, speed, flag, overrideEntryClipsetName) invoker.call(0xC20E50AA46D09CA8, ped, vehicle, timeout, seat, speed, flag, overrideEntryClipsetName) end,
	---Flags from decompiled scripts:  
	---0 = normal exit and closes door.  
	---1 = normal exit and closes door.  
	---16 = teleports outside, door kept closed.  
	---64 = normal exit and closes door, maybe a bit slower animation than 0.  
	---256 = normal exit but does not close the door.  
	---4160 = ped is throwing himself out, even when the vehicle is still.  
	---262144 = ped moves to passenger seat first, then exits normally  
	---  
	---Others to be tried out: 320, 512, 131072.  
	TASK_LEAVE_VEHICLE = function(ped, vehicle, flags) invoker.call(0xD3DBCE61A490BE02, ped, vehicle, flags) end,
	---  
	TASK_GET_OFF_BOAT = function(ped, boat) invoker.call(0x9C00E77AF14B2DFF, ped, boat) end,
	---  
	TASK_SKY_DIVE = function(ped, instant) invoker.call(0x601736CFE536B0A0, ped, instant) end,
	---Second parameter is unused.  
	---  
	---second parameter was for jetpack in the early stages of gta and the hard coded code is now removed  
	TASK_PARACHUTE = function(ped, giveParachuteItem, instant) invoker.call(0xD2F1C53C97EE81AB, ped, giveParachuteItem, instant) end,
	---makes ped parachute to coords x y z. Works well with PATHFIND::GET_SAFE_COORD_FOR_PED  
	TASK_PARACHUTE_TO_TARGET = function(ped, x, y, z) invoker.call(0xB33E291AFA6BD03A, ped, x, y, z) end,
	---  
	SET_PARACHUTE_TASK_TARGET = function(ped, x, y, z) invoker.call(0xC313379AF0FCEDA7, ped, x, y, z) end,
	---  
	SET_PARACHUTE_TASK_THRUST = function(ped, thrust) invoker.call(0x0729BAC1B8C64317, ped, thrust) end,
	---minHeightAboveGround: the minimum height above ground the heli must be at before the ped can start rappelling  
	---  
	---Only appears twice in the scripts.  
	---  
	---TASK::TASK_RAPPEL_FROM_HELI(PLAYER::PLAYER_PED_ID(), 10.0f);  
	---TASK::TASK_RAPPEL_FROM_HELI(a_0, 10.0f);  
	TASK_RAPPEL_FROM_HELI = function(ped, minHeightAboveGround) invoker.call(0x09693B0312F91649, ped, minHeightAboveGround) end,
	---info about driving modes: https://gtaforums.com/topic/822314-guide-driving-styles/  
	TASK_VEHICLE_DRIVE_TO_COORD = function(ped, vehicle, x, y, z, speed, p6, vehicleModel, drivingMode, stopRange, straightLineDistance) invoker.call(0xE2A2AA2F659D77A7, ped, vehicle, x, y, z, speed, p6, vehicleModel, drivingMode, stopRange, straightLineDistance) end,
	---  
	TASK_VEHICLE_DRIVE_TO_COORD_LONGRANGE = function(ped, vehicle, x, y, z, speed, driveMode, stopRange) invoker.call(0x158BB33F920D360C, ped, vehicle, x, y, z, speed, driveMode, stopRange) end,
	---  
	TASK_VEHICLE_DRIVE_WANDER = function(ped, vehicle, speed, drivingStyle) invoker.call(0x480142959D337D00, ped, vehicle, speed, drivingStyle) end,
	---p6 always -1  
	---p7 always 10.0  
	---p8 always 1  
	TASK_FOLLOW_TO_OFFSET_OF_ENTITY = function(ped, entity, offsetX, offsetY, offsetZ, movementSpeed, timeout, stoppingRange, persistFollowing) invoker.call(0x304AE42E357B8C7E, ped, entity, offsetX, offsetY, offsetZ, movementSpeed, timeout, stoppingRange, persistFollowing) end,
	---  
	TASK_GO_STRAIGHT_TO_COORD = function(ped, x, y, z, speed, timeout, targetHeading, distanceToSlide) invoker.call(0xD76B57B44F1E6F8B, ped, x, y, z, speed, timeout, targetHeading, distanceToSlide) end,
	---  
	TASK_GO_STRAIGHT_TO_COORD_RELATIVE_TO_ENTITY = function(ped, entity, x, y, z, moveBlendRatio, time) invoker.call(0x61E360B7E040D12E, ped, entity, x, y, z, moveBlendRatio, time) end,
	---Makes the specified ped achieve the specified heading.  
	---  
	---pedHandle: The handle of the ped to assign the task to.  
	---heading: The desired heading.  
	---timeout: The time, in milliseconds, to allow the task to complete. If the task times out, it is cancelled, and the ped will stay at the heading it managed to reach in the time.  
	TASK_ACHIEVE_HEADING = function(ped, heading, timeout) invoker.call(0x93B93A37987F1F3D, ped, heading, timeout) end,
	---MulleKD19: Clears the current point route. Call this before TASK_EXTEND_ROUTE and TASK_FOLLOW_POINT_ROUTE.  
	TASK_FLUSH_ROUTE = function() invoker.call(0x841142A1376E9006) end,
	---MulleKD19: Adds a new point to the current point route. Call TASK_FLUSH_ROUTE before the first call to this. Call TASK_FOLLOW_POINT_ROUTE to make the Ped go the route.  
	---  
	---A maximum of 8 points can be added.  
	TASK_EXTEND_ROUTE = function(x, y, z) invoker.call(0x1E7889778264843A, x, y, z) end,
	---MulleKD19: Makes the ped go on the created point route.  
	---  
	---ped: The ped to give the task to.  
	---speed: The speed to move at in m/s.  
	---int: Unknown. Can be 0, 1, 2 or 3.  
	---  
	---Example:  
	---TASK_FLUSH_ROUTE();  
	---TASK_EXTEND_ROUTE(0f, 0f, 70f);  
	---TASK_EXTEND_ROUTE(10f, 0f, 70f);  
	---TASK_EXTEND_ROUTE(10f, 10f, 70f);  
	---TASK_FOLLOW_POINT_ROUTE(GET_PLAYER_PED(), 1f, 0);  
	TASK_FOLLOW_POINT_ROUTE = function(ped, speed, mode) invoker.call(0x595583281858626E, ped, speed, mode) end,
	---The entity will move towards the target until time is over (duration) or get in target's range (distance). p5 and p6 are unknown, but you could leave p5 = 1073741824 or 100 or even 0 (didn't see any difference but on the decompiled scripts, they use 1073741824 mostly) and p6 = 0  
	---  
	---Note: I've only tested it on entity -> ped and target -> vehicle. It could work differently on other entities, didn't try it yet.  
	---  
	---Example: TASK::TASK_GO_TO_ENTITY(pedHandle, vehicleHandle, 5000, 4.0, 100, 1073741824, 0)  
	---  
	---Ped will run towards the vehicle for 5 seconds and stop when time is over or when he gets 4 meters(?) around the vehicle (with duration = -1, the task duration will be ignored).  
	---  
	---enum EGOTO_ENTITY_SCRIPT_FLAGS  
	---{  
	---	EGOTO_ENTITY_NEVER_SLOW_FOR_PATH_LENGTH = 0x01,  
	---};  
	TASK_GO_TO_ENTITY = function(entity, target, duration, distance, moveBlendRatio, slowDownDistance, flags) invoker.call(0x6A071245EB0D1882, entity, target, duration, distance, moveBlendRatio, slowDownDistance, flags) end,
	---Makes the specified ped flee the specified distance from the specified position.  
	TASK_SMART_FLEE_COORD = function(ped, x, y, z, distance, time, preferPavements, quitIfOutOfRange) invoker.call(0x94587F17E9C365D5, ped, x, y, z, distance, time, preferPavements, quitIfOutOfRange) end,
	---Makes a ped run away from another ped (fleeTarget).  
	---  
	---distance = ped will flee this distance.  
	---fleeTime = ped will flee for this amount of time, set to "-1" to flee forever  
	TASK_SMART_FLEE_PED = function(ped, fleeTarget, safeDistance, fleeTime, preferPavements, updateToNearestHatedPed) invoker.call(0x22B0D0E37CCB840D, ped, fleeTarget, safeDistance, fleeTime, preferPavements, updateToNearestHatedPed) end,
	---  
	TASK_REACT_AND_FLEE_PED = function(ped, fleeTarget) invoker.call(0x72C896464915D1B1, ped, fleeTarget) end,
	---  
	TASK_SHOCKING_EVENT_REACT = function(ped, eventHandle) invoker.call(0x452419CBD838065B, ped, eventHandle) end,
	---  
	TASK_WANDER_IN_AREA = function(ped, x, y, z, radius, minimalLength, timeBetweenWalks) invoker.call(0xE054346CA3A0F315, ped, x, y, z, radius, minimalLength, timeBetweenWalks) end,
	---Makes ped walk around the area.  
	---  
	---set p1 to 10.0f and p2 to 10 if you want the ped to walk anywhere without a duration.  
	TASK_WANDER_STANDARD = function(ped, heading, flags) invoker.call(0xBB9CE077274F6A1B, ped, heading, flags) end,
	---  
	TASK_WANDER_SPECIFIC = function(ped, conditionalAnimGroupStr, conditionalAnimStr, heading) invoker.call(0x6919A2F136426098, ped, conditionalAnimGroupStr, conditionalAnimStr, heading) end,
	---Modes:  
	---0 - ignore heading  
	---1 - park forward  
	---2 - park backwards  
	---  
	---Depending on the angle of approach, the vehicle can park at the specified heading or at its exact opposite (-180) angle.  
	---  
	---Radius seems to define how close the vehicle has to be -after parking- to the position for this task considered completed. If the value is too small, the vehicle will try to park again until it's exactly where it should be. 20.0 Works well but lower values don't, like the radius is measured in centimeters or something.  
	TASK_VEHICLE_PARK = function(ped, vehicle, x, y, z, heading, mode, radius, keepEngineOn) invoker.call(0x0F3E34E968EA374E, ped, vehicle, x, y, z, heading, mode, radius, keepEngineOn) end,
	---known "killTypes" are: "AR_stealth_kill_knife" and "AR_stealth_kill_a".  
	TASK_STEALTH_KILL = function(killer, target, stealthKillActionResultHash, desiredMoveBlendRatio, stealthFlags) invoker.call(0xAA5DC05579D60BD9, killer, target, stealthKillActionResultHash, desiredMoveBlendRatio, stealthFlags) end,
	---  
	TASK_PLANT_BOMB = function(ped, x, y, z, heading) invoker.call(0x965FEC691D55E9BF, ped, x, y, z, heading) end,
	---  
	TASK_SHARK_CIRCLE_COORD = function(ped, x, y, z, moveBlendRatio, radius) invoker.call(0x60A19CF85FF4CEFA, ped, x, y, z, moveBlendRatio, radius) end,
	---If no timeout, set timeout to -1.  
	TASK_FOLLOW_NAV_MESH_TO_COORD = function(ped, x, y, z, moveBlendRatio, time, targetRadius, flags, targetHeading) invoker.call(0x15D3A79D4E44B913, ped, x, y, z, moveBlendRatio, time, targetRadius, flags, targetHeading) end,
	---  
	TASK_FOLLOW_NAV_MESH_TO_COORD_ADVANCED = function(ped, x, y, z, moveBlendRatio, time, targetRadius, flags, slideToCoordHeading, maxSlopeNavigable, clampMaxSearchDistance, targetHeading) invoker.call(0x17F58B88D085DBAC, ped, x, y, z, moveBlendRatio, time, targetRadius, flags, slideToCoordHeading, maxSlopeNavigable, clampMaxSearchDistance, targetHeading) end,
	---  
	SET_PED_PATH_CAN_USE_CLIMBOVERS = function(ped, Toggle) invoker.call(0x8E06A6FE76C9EFF4, ped, Toggle) end,
	---  
	SET_PED_PATH_CAN_USE_LADDERS = function(ped, Toggle) invoker.call(0x77A5B103C87F476E, ped, Toggle) end,
	---  
	SET_PED_PATH_CAN_DROP_FROM_HEIGHT = function(ped, Toggle) invoker.call(0xE361C5C71C431A4F, ped, Toggle) end,
	---Default modifier is 1.0, minimum is 0.0 and maximum is 10.0.  
	SET_PED_PATH_CLIMB_COST_MODIFIER = function(ped, modifier) invoker.call(0x88E32DB8C1A4AA4B, ped, modifier) end,
	---  
	SET_PED_PATH_MAY_ENTER_WATER = function(ped, mayEnterWater) invoker.call(0xF35425A4204367EC, ped, mayEnterWater) end,
	---  
	SET_PED_PATH_PREFER_TO_AVOID_WATER = function(ped, avoidWater) invoker.call(0x38FE1EC73743793C, ped, avoidWater) end,
	---  
	SET_PED_PATH_AVOID_FIRE = function(ped, avoidFire) invoker.call(0x4455517B28441E60, ped, avoidFire) end,
	---Needs to be looped! And yes, it does work and is not a hash collision.  
	---Birds will try to reach the given height.  
	SET_GLOBAL_MIN_BIRD_FLIGHT_HEIGHT = function(height) invoker.call(0x6C6B148586F934F7, height) end,
	---Looks like the last parameter returns true if the path has been calculated, while the first returns the remaining distance to the end of the path.  
	---Return value of native is the same as GET_NAVMESH_ROUTE_RESULT  
	---Looks like the native returns an int for the path's state:  
	---1 - ???  
	---2 - ???  
	---3 - Finished Generating   
	GET_NAVMESH_ROUTE_DISTANCE_REMAINING = function(ped, distanceRemaining, isPathReady) return invoker.call(0xC6F5C0BCDC74D62D, ped, distanceRemaining, isPathReady).int end,
	---See GET_NAVMESH_ROUTE_DISTANCE_REMAINING for more details.  
	GET_NAVMESH_ROUTE_RESULT = function(ped) return invoker.call(0x632E831F382A0FA8, ped).int end,
	---  
	IS_CONTROLLED_VEHICLE_UNABLE_TO_GET_TO_ROAD = function(ped) return invoker.call(0x3E38E28A1D80DDF6, ped).bool end,
	---example from fm_mission_controller  
	---  
	---TASK::TASK_GO_TO_COORD_ANY_MEANS(l_649, sub_f7e86(-1, 0), 1.0, 0, 0, 786603, 0xbf800000);  
	---   
	TASK_GO_TO_COORD_ANY_MEANS = function(ped, x, y, z, moveBlendRatio, vehicle, useLongRangeVehiclePathing, drivingFlags, maxRangeToShootTargets) invoker.call(0x5BC448CB78FA3E88, ped, x, y, z, moveBlendRatio, vehicle, useLongRangeVehiclePathing, drivingFlags, maxRangeToShootTargets) end,
	---  
	TASK_GO_TO_COORD_ANY_MEANS_EXTRA_PARAMS = function(ped, x, y, z, moveBlendRatio, vehicle, useLongRangeVehiclePathing, drivingFlags, maxRangeToShootTargets, extraVehToTargetDistToPreferVehicle, driveStraightLineDistance, extraFlags, warpTimerMS) invoker.call(0x1DD45F9ECFDB1BC9, ped, x, y, z, moveBlendRatio, vehicle, useLongRangeVehiclePathing, drivingFlags, maxRangeToShootTargets, extraVehToTargetDistToPreferVehicle, driveStraightLineDistance, extraFlags, warpTimerMS) end,
	---  
	TASK_GO_TO_COORD_ANY_MEANS_EXTRA_PARAMS_WITH_CRUISE_SPEED = function(ped, x, y, z, moveBlendRatio, vehicle, useLongRangeVehiclePathing, drivingFlags, maxRangeToShootTargets, extraVehToTargetDistToPreferVehicle, driveStraightLineDistance, extraFlags, cruiseSpeed, targetArriveDist) invoker.call(0xB8ECD61F531A7B02, ped, x, y, z, moveBlendRatio, vehicle, useLongRangeVehiclePathing, drivingFlags, maxRangeToShootTargets, extraVehToTargetDistToPreferVehicle, driveStraightLineDistance, extraFlags, cruiseSpeed, targetArriveDist) end,
	---Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json  
	---  
	---float speed > normal speed is 8.0f  
	-------------------------  
	---  
	---float speedMultiplier > multiply the playback speed  
	-------------------------  
	---  
	---int duration: time in millisecond  
	-------------------------  
	----1 _ _ _ _ _ _ _> Default (see flag)  
	---0 _ _ _ _ _ _ _ > Not play at all  
	---Small value _ _ > Slow down animation speed  
	---Other _ _ _ _ _ > freeze player control until specific time (ms) has   
	---_ _ _ _ _ _ _ _ _ passed. (No effect if flag is set to be   
	---_ _ _ _ _ _ _ _ _ controllable.)  
	---  
	---int flag:  
	-------------------------  
	---enum eAnimationFlags  
	---{  
	--- ANIM_FLAG_NORMAL = 0,  
	---   ANIM_FLAG_REPEAT = 1,  
	---   ANIM_FLAG_STOP_LAST_FRAME = 2,  
	---   ANIM_FLAG_UPPERBODY = 16,  
	---   ANIM_FLAG_ENABLE_PLAYER_CONTROL = 32,  
	---   ANIM_FLAG_CANCELABLE = 120,  
	---};  
	---Odd number : loop infinitely  
	---Even number : Freeze at last frame  
	---Multiple of 4: Freeze at last frame but controllable  
	---  
	---01 to 15 > Full body  
	---10 to 31 > Upper body  
	---32 to 47 > Full body > Controllable  
	---48 to 63 > Upper body > Controllable  
	---...  
	---001 to 255 > Normal  
	---256 to 511 > Garbled  
	---...  
	---  
	---playbackRate:  
	---  
	---values are between 0.0 and 1.0  
	---  
	---  
	---lockX:    
	---  
	---0 in most cases 1 for rcmepsilonism8 and rcmpaparazzo_3  
	---> 1 for mini@sprunk  
	---   
	---  
	---lockY:  
	---  
	---0 in most cases   
	---1 for missfam5_yoga, missfra1mcs_2_crew_react  
	---  
	---  
	---lockZ:   
	---  
	---    0 for single player   
	---    Can be 1 but only for MP   
	TASK_PLAY_ANIM = function(ped, animDictionary, animationName, blendInSpeed, blendOutSpeed, duration, flag, playbackRate, lockX, lockY, lockZ) invoker.call(0xEA47FE3719165B94, ped, animDictionary, animationName, blendInSpeed, blendOutSpeed, duration, flag, playbackRate, lockX, lockY, lockZ) end,
	---It's similar to TASK_PLAY_ANIM, except the first 6 floats let you specify the initial position and rotation of the task. (Ped gets teleported to the position).  
	---  
	---Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json  
	TASK_PLAY_ANIM_ADVANCED = function(ped, animDict, animName, posX, posY, posZ, rotX, rotY, rotZ, animEnterSpeed, animExitSpeed, duration, flag, animTime, rotOrder, ikFlags) invoker.call(0x83CDB10EA29B370B, ped, animDict, animName, posX, posY, posZ, rotX, rotY, rotZ, animEnterSpeed, animExitSpeed, duration, flag, animTime, rotOrder, ikFlags) end,
	---Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json  
	STOP_ANIM_TASK = function(entity, animDictionary, animationName, blendDelta) invoker.call(0x97FF36A1D40EA00A, entity, animDictionary, animationName, blendDelta) end,
	---From fm_mission_controller.c:  
	---reserve_network_mission_objects(get_num_reserved_mission_objects(0) + 1);  
	---           vVar28 = {0.094f, 0.02f, -0.005f};  
	---            vVar29 = {-92.24f, 63.64f, 150.24f};  
	---          func_253(&uVar30, joaat("prop_ld_case_01"), Global_1592429.imm_34757[iParam1 <268>], 1, 1, 0, 1);  
	---         set_entity_lod_dist(net_to_ent(uVar30), 500);  
	---         attach_entity_to_entity(net_to_ent(uVar30), iParam0, get_ped_bone_index(iParam0, 28422), vVar28, vVar29, 1, 0, 0, 0, 2, 1);  
	---           Var31.imm_4 = 1065353216;  
	---         Var31.imm_5 = 1065353216;  
	---         Var31.imm_9 = 1065353216;  
	---         Var31.imm_10 = 1065353216;  
	---            Var31.imm_14 = 1065353216;  
	---            Var31.imm_15 = 1065353216;  
	---            Var31.imm_17 = 1040187392;  
	---            Var31.imm_18 = 1040187392;  
	---            Var31.imm_19 = -1;  
	---            Var32.imm_4 = 1065353216;  
	---         Var32.imm_5 = 1065353216;  
	---         Var32.imm_9 = 1065353216;  
	---         Var32.imm_10 = 1065353216;  
	---            Var32.imm_14 = 1065353216;  
	---            Var32.imm_15 = 1065353216;  
	---            Var32.imm_17 = 1040187392;  
	---            Var32.imm_18 = 1040187392;  
	---            Var32.imm_19 = -1;  
	---            Var31 = 1;  
	---            Var31.imm_1 = "weapons@misc@jerrycan@mp_male";  
	---          Var31.imm_2 = "idle";  
	---           Var31.imm_20 = 1048633;  
	---           Var31.imm_4 = 0.5f;  
	---           Var31.imm_16 = get_hash_key("BONEMASK_ARMONLY_R");  
	---          task_scripted_animation(iParam0, &Var31, &Var32, &Var32, 0f, 0.25f);  
	---          set_model_as_no_longer_needed(joaat("prop_ld_case_01"));  
	---            remove_anim_dict("anim@heists@biolab@");  
	TASK_SCRIPTED_ANIMATION = function(ped, priorityLowData, priorityMidData, priorityHighData, blendInDelta, blendOutDelta) invoker.call(0x126EF75F1E17ABE5, ped, priorityLowData, priorityMidData, priorityHighData, blendInDelta, blendOutDelta) end,
	---  
	PLAY_ENTITY_SCRIPTED_ANIM = function(entity, priorityLowData, priorityMidData, priorityHighData, blendInDelta, blendOutDelta) invoker.call(0x77A1EEC547E7FCF1, entity, priorityLowData, priorityMidData, priorityHighData, blendInDelta, blendOutDelta) end,
	---Looks like p1 may be a flag, still need to do some research, though.  
	STOP_ANIM_PLAYBACK = function(entity, priority, secondary) invoker.call(0xEE08C992D238C5D1, entity, priority, secondary) end,
	---  
	SET_ANIM_WEIGHT = function(entity, weight, priority, index, secondary) invoker.call(0x207F1A47C0342F48, entity, weight, priority, index, secondary) end,
	---  
	SET_ANIM_PHASE = function(entity, phase, priority, secondary) invoker.call(0xDDF3CB5A0A4C0B49, entity, phase, priority, secondary) end,
	---  
	SET_ANIM_RATE = function(entity, rate, priority, secondary) invoker.call(0x032D49C5E359C847, entity, rate, priority, secondary) end,
	---  
	SET_ANIM_LOOPED = function(entity, looped, priority, secondary) invoker.call(0x70033C3CC29A1FF4, entity, looped, priority, secondary) end,
	---Example from the scripts:  
	---TASK::TASK_PLAY_PHONE_GESTURE_ANIMATION(PLAYER::PLAYER_PED_ID(), v_3, v_2, v_4, 0.25, 0.25, 0, 0);  
	---  
	---=========================================================  
	---^^ No offense, but Idk how that would really help anyone.  
	---  
	---As for the animDict & animation, they're both store in a global in all 5 scripts. So if anyone would be so kind as to read that global and comment what strings they use. Thanks.  
	---  
	---Known boneMaskTypes'  
	---"BONEMASK_HEADONLY"  
	---"BONEMASK_HEAD_NECK_AND_ARMS"  
	---"BONEMASK_HEAD_NECK_AND_L_ARM"  
	---"BONEMASK_HEAD_NECK_AND_R_ARM"  
	---  
	---p4 known args - 0.0f, 0.5f, 0.25f  
	---p5 known args - 0.0f, 0.25f  
	---p6 known args - 1 if a global if check is passed.  
	---p7 known args - 1 if a global if check is passed.  
	---  
	---The values found above, I found within the 5 scripts this is ever called in. (fmmc_launcher, fm_deathmatch_controller, fm_impromptu_dm_controller, fm_mission_controller, and freemode).  
	---=========================================================  
	---  
	---Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json  
	TASK_PLAY_PHONE_GESTURE_ANIMATION = function(ped, animDict, animation, boneMaskType, blendInDuration, blendOutDuration, isLooping, holdLastFrame) invoker.call(0x8FBB6758B3B3E9EC, ped, animDict, animation, boneMaskType, blendInDuration, blendOutDuration, isLooping, holdLastFrame) end,
	---  
	TASK_STOP_PHONE_GESTURE_ANIMATION = function(ped, blendOutOverride) invoker.call(0x3FA00D4F4641BFAE, ped, blendOutOverride) end,
	---  
	IS_PLAYING_PHONE_GESTURE_ANIM = function(ped) return invoker.call(0xB8EBB1E9D3588C10, ped).bool end,
	---  
	GET_PHONE_GESTURE_ANIM_CURRENT_TIME = function(ped) return invoker.call(0x47619ABE8B268C60, ped).float end,
	---  
	GET_PHONE_GESTURE_ANIM_TOTAL_TIME = function(ped) return invoker.call(0x1EE0F68A7C25DEC6, ped).float end,
	---Most probably plays a specific animation on vehicle. For example getting chop out of van etc...  
	---  
	---Here's how its used -   
	---  
	---TASK::TASK_VEHICLE_PLAY_ANIM(l_325, "rcmnigel1b", "idle_speedo");  
	---  
	---TASK::TASK_VEHICLE_PLAY_ANIM(l_556[0/*1*/], "missfra0_chop_drhome", "InCar_GetOutofBack_Speedo");  
	---  
	---FYI : Speedo is the name of van in which chop was put in the mission.  
	TASK_VEHICLE_PLAY_ANIM = function(vehicle, animationSet, animationName) invoker.call(0x69F5C3BD0F3EBD89, vehicle, animationSet, animationName) end,
	---enum eScriptLookatFlags  
	---{  
	---	SLF_SLOW_TURN_RATE            = 1,    // turn the head toward the target slowly  
	---	SLF_FAST_TURN_RATE            = 2,    // turn the head toward the target quickly  
	---	SLF_EXTEND_YAW_LIMIT        = 4,    // wide yaw head limits  
	---	SLF_EXTEND_PITCH_LIMIT        = 8,    // wide pitch head limit  
	---	SLF_WIDEST_YAW_LIMIT        = 16,   // widest yaw head limit  
	---	SLF_WIDEST_PITCH_LIMIT        = 32,   // widest pitch head limit  
	---	SLF_NARROW_YAW_LIMIT        = 64,   // narrow yaw head limits  
	---	SLF_NARROW_PITCH_LIMIT        = 128,  // narrow pitch head limit  
	---	SLF_NARROWEST_YAW_LIMIT        = 256,  // narrowest yaw head limit  
	---	SLF_NARROWEST_PITCH_LIMIT    = 512,  // narrowest pitch head limit  
	---	SLF_USE_TORSO                = 1024, // use the torso aswell as the neck and head (currently disabled)  
	---	SLF_WHILE_NOT_IN_FOV        = 2048, // keep tracking the target even if they are not in the hard coded FOV  
	---	SLF_USE_CAMERA_FOCUS        = 4096, // use the camera as the target  
	---	SLF_USE_EYES_ONLY            = 8192, // only track the target with the eyes    
	---	SLF_USE_LOOK_DIR            = 16384, // use information in look dir DOF  
	---	SLF_FROM_SCRIPT                = 32768, // internal use only  
	---	SLF_USE_REF_DIR_ABSOLUTE    = 65536  // use absolute reference direction mode for solver  
	---};  
	TASK_LOOK_AT_COORD = function(entity, x, y, z, duration, flags, priority) invoker.call(0x6FA46612594F7973, entity, x, y, z, duration, flags, priority) end,
	---For flags, please refer to TASK_LOOK_AT_COORD.  
	TASK_LOOK_AT_ENTITY = function(ped, lookAt, duration, flags, priority) invoker.call(0x69F4BE8C8CC4796C, ped, lookAt, duration, flags, priority) end,
	---  
	TASK_CLEAR_LOOK_AT = function(ped) invoker.call(0x0F804F1DB19B9689, ped) end,
	---  
	OPEN_SEQUENCE_TASK = function(taskSequenceId) invoker.call(0xE8854A4326B9E12B, taskSequenceId) end,
	---  
	CLOSE_SEQUENCE_TASK = function(taskSequenceId) invoker.call(0x39E72BC99E6360CB, taskSequenceId) end,
	---  
	TASK_PERFORM_SEQUENCE = function(ped, taskSequenceId) invoker.call(0x5ABA3986D90D8A3B, ped, taskSequenceId) end,
	---  
	TASK_PERFORM_SEQUENCE_LOCALLY = function(ped, taskSequenceId) invoker.call(0x8C33220C8D78CA0D, ped, taskSequenceId) end,
	---  
	CLEAR_SEQUENCE_TASK = function(taskSequenceId) invoker.call(0x3841422E9C488D8C, taskSequenceId) end,
	---  
	SET_SEQUENCE_TO_REPEAT = function(taskSequenceId, _repeat) invoker.call(0x58C70CF3A41E4AE7, taskSequenceId, _repeat) end,
	---  
	SET_SEQUENCE_PREVENT_MIGRATION = function(taskSequenceId) invoker.call(0xF5D1F489147CB683, taskSequenceId) end,
	---returned values:  
	---0 to 7 = task that's currently in progress, 0 meaning the first one.  
	----1 no task sequence in progress.  
	GET_SEQUENCE_PROGRESS = function(ped) return invoker.call(0x00A9010CFE1E3533, ped).int end,
	---Task index enum: https://alloc8or.re/gta5/doc/enums/eTaskTypeIndex.txt  
	GET_IS_TASK_ACTIVE = function(ped, taskIndex) return invoker.call(0xB0760331C7AA4155, ped, taskIndex).bool end,
	---Gets the status of a script-assigned task.  
	---taskHash: https://alloc8or.re/gta5/doc/enums/eScriptTaskHash.txt  
	GET_SCRIPT_TASK_STATUS = function(ped, taskHash) return invoker.call(0x77F1BEB8863288D5, ped, taskHash).int end,
	---https://alloc8or.re/gta5/doc/enums/eVehicleMissionType.txt  
	GET_ACTIVE_VEHICLE_MISSION_TYPE = function(vehicle) return invoker.call(0x534AEBA6E5ED4CAB, vehicle).int end,
	---Flags are the same flags used in TASK_LEAVE_VEHICLE  
	TASK_LEAVE_ANY_VEHICLE = function(ped, delayTime, flags) invoker.call(0x504D54DF3F6F2247, ped, delayTime, flags) end,
	---  
	TASK_AIM_GUN_SCRIPTED = function(ped, scriptTask, disableBlockingClip, instantBlendToAim) invoker.call(0x7A192BE16D373D00, ped, scriptTask, disableBlockingClip, instantBlendToAim) end,
	---  
	TASK_AIM_GUN_SCRIPTED_WITH_TARGET = function(ped, target, x, y, z, gunTaskType, disableBlockingClip, forceAim) invoker.call(0x8605AF0DE8B3A5AC, ped, target, x, y, z, gunTaskType, disableBlockingClip, forceAim) end,
	---  
	UPDATE_TASK_AIM_GUN_SCRIPTED_TARGET = function(ped, target, x, y, z, disableBlockingClip) invoker.call(0x9724FB59A3E72AD0, ped, target, x, y, z, disableBlockingClip) end,
	---  
	GET_CLIP_SET_FOR_SCRIPTED_GUN_TASK = function(gunTaskType) return invoker.call(0x3A8CADC7D37AACC5, gunTaskType).str end,
	---duration: the amount of time in milliseconds to do the task.  -1 will keep the task going until either another task is applied, or CLEAR_ALL_TASKS() is called with the ped  
	TASK_AIM_GUN_AT_ENTITY = function(ped, entity, duration, instantBlendToAim) invoker.call(0x9B53BB6E8943AF53, ped, entity, duration, instantBlendToAim) end,
	---duration: the amount of time in milliseconds to do the task. -1 will keep the task going until either another task is applied, or CLEAR_ALL_TASKS() is called with the ped  
	TASK_TURN_PED_TO_FACE_ENTITY = function(ped, entity, duration) invoker.call(0x5AD23D40115353AC, ped, entity, duration) end,
	---  
	TASK_AIM_GUN_AT_COORD = function(ped, x, y, z, time, instantBlendToAim, playAnimIntro) invoker.call(0x6671F3EEC681BDA1, ped, x, y, z, time, instantBlendToAim, playAnimIntro) end,
	---Firing Pattern Hash Information: https://pastebin.com/Px036isB  
	TASK_SHOOT_AT_COORD = function(ped, x, y, z, duration, firingPattern) invoker.call(0x46A6CC01E0826106, ped, x, y, z, duration, firingPattern) end,
	---Makes the specified ped shuffle to the next vehicle seat.  
	---The ped MUST be in a vehicle and the vehicle parameter MUST be the ped's current vehicle.  
	TASK_SHUFFLE_TO_NEXT_VEHICLE_SEAT = function(ped, vehicle, useAlternateShuffle) invoker.call(0x7AA80209BDA643EB, ped, vehicle, useAlternateShuffle) end,
	---  
	CLEAR_PED_TASKS = function(ped) invoker.call(0xE1EF3C1216AFF2CD, ped) end,
	---  
	CLEAR_PED_SCRIPT_TASK_IF_RUNNING_THREAT_RESPONSE_NON_TEMP_TASK = function(ped) invoker.call(0xF6DC48E56BE1243A, ped) end,
	---  
	CLEAR_PED_SECONDARY_TASK = function(ped) invoker.call(0x176CECF6F920D707, ped) end,
	---  
	TASK_EVERYONE_LEAVE_VEHICLE = function(vehicle) invoker.call(0x7F93691AB4B92272, vehicle) end,
	---enum ESEEK_ENTITY_OFFSET_FLAGS  
	---{  
	---	ESEEK_OFFSET_ORIENTATES_WITH_ENTITY = 0x01,  
	---	ESEEK_KEEP_TO_PAVEMENTS = 0x02  
	---};  
	TASK_GOTO_ENTITY_OFFSET = function(ped, entity, time, seekRadius, seekAngleDeg, moveBlendRatio, gotoEntityOffsetFlags) invoker.call(0xE39B4FF4FDEBDE27, ped, entity, time, seekRadius, seekAngleDeg, moveBlendRatio, gotoEntityOffsetFlags) end,
	---  
	TASK_GOTO_ENTITY_OFFSET_XY = function(ped, entity, duration, targetRadius, offsetX, offsetY, moveBlendRatio, gotoEntityOffsetFlags) invoker.call(0x338E7EF52B6095A9, ped, entity, duration, targetRadius, offsetX, offsetY, moveBlendRatio, gotoEntityOffsetFlags) end,
	---duration in milliseconds  
	TASK_TURN_PED_TO_FACE_COORD = function(ped, x, y, z, duration) invoker.call(0x1DDA930A0AC38571, ped, x, y, z, duration) end,
	---'1 - brake  
	---'3 - brake + reverse  
	---'4 - turn left 90 + braking  
	---'5 - turn right 90 + braking  
	---'6 - brake strong (handbrake?) until time ends  
	---'7 - turn left + accelerate  
	---'8 - turn right + accelerate  
	---'9 - weak acceleration  
	---'10 - turn left + restore wheel pos to center in the end  
	---'11 - turn right + restore wheel pos to center in the end  
	---'13 - turn left + go reverse  
	---'14 - turn left + go reverse  
	---'16 - crash the game after like 2 seconds :)  
	---'17 - keep actual state, game crashed after few tries  
	---'18 - game crash  
	---'19 - strong brake + turn left/right  
	---'20 - weak brake + turn left then turn right  
	---'21 - weak brake + turn right then turn left  
	---'22 - brake + reverse  
	---'23 - accelerate fast  
	---'24 - brake  
	---'25 - brake turning left then when almost stopping it turns left more  
	---'26 - brake turning right then when almost stopping it turns right more  
	---'27 - brake until car stop or until time ends  
	---'28 - brake + strong reverse acceleration  
	---'30 - performs a burnout (brake until stop + brake and accelerate)  
	---'31 - accelerate + handbrake  
	---'32 - accelerate very strong  
	---  
	---Seems to be this:  
	---Works on NPCs, but overrides their current task. If inside a task sequence (and not being the last task), "time" will work, otherwise the task will be performed forever until tasked with something else  
	TASK_VEHICLE_TEMP_ACTION = function(driver, vehicle, action, time) invoker.call(0xC429DCEEB339E129, driver, vehicle, action, time) end,
	---missionType: https://alloc8or.re/gta5/doc/enums/eVehicleMissionType.txt  
	TASK_VEHICLE_MISSION = function(driver, vehicle, vehicleTarget, missionType, cruiseSpeed, drivingStyle, targetReached, straightLineDistance, DriveAgainstTraffic) invoker.call(0x659427E0EF36BCDE, driver, vehicle, vehicleTarget, missionType, cruiseSpeed, drivingStyle, targetReached, straightLineDistance, DriveAgainstTraffic) end,
	---See TASK_VEHICLE_MISSION  
	TASK_VEHICLE_MISSION_PED_TARGET = function(ped, vehicle, pedTarget, missionType, maxSpeed, drivingStyle, minDistance, straightLineDistance, DriveAgainstTraffic) invoker.call(0x9454528DF15D657A, ped, vehicle, pedTarget, missionType, maxSpeed, drivingStyle, minDistance, straightLineDistance, DriveAgainstTraffic) end,
	---See TASK_VEHICLE_MISSION  
	TASK_VEHICLE_MISSION_COORS_TARGET = function(ped, vehicle, x, y, z, mission, cruiseSpeed, drivingStyle, targetReached, straightLineDistance, DriveAgainstTraffic) invoker.call(0xF0AF20AA7731F8C3, ped, vehicle, x, y, z, mission, cruiseSpeed, drivingStyle, targetReached, straightLineDistance, DriveAgainstTraffic) end,
	---Makes a ped follow the targetVehicle with <minDistance> in between.  
	---  
	---note: minDistance is ignored if drivingstyle is avoiding traffic, but Rushed is fine.  
	---  
	---Mode: The mode defines the relative position to the targetVehicle. The ped will try to position its vehicle there.  
	----1 = behind  
	---0 = ahead  
	---1 = left  
	---2 = right  
	---3 = back left  
	---4 = back right  
	---  
	---if the target is closer than noRoadsDistance, the driver will ignore pathing/roads and follow you directly.  
	---  
	---Driving Styles guide: gtaforums.com/topic/822314-guide-driving-styles/  
	TASK_VEHICLE_ESCORT = function(ped, vehicle, targetVehicle, mode, speed, drivingStyle, minDistance, minHeightAboveTerrain, noRoadsDistance) invoker.call(0x0FA6E4B75F302400, ped, vehicle, targetVehicle, mode, speed, drivingStyle, minDistance, minHeightAboveTerrain, noRoadsDistance) end,
	---Makes a ped in a vehicle follow an entity (ped, vehicle, etc.)  
	---  
	---drivingStyle: http://gtaforums.com/topic/822314-guide-driving-styles/  
	TASK_VEHICLE_FOLLOW = function(driver, vehicle, targetEntity, speed, drivingStyle, minDistance) invoker.call(0xFC545A9F0626E3B6, driver, vehicle, targetEntity, speed, drivingStyle, minDistance) end,
	---chases targetEnt fast and aggressively  
	-----  
	---Makes ped (needs to be in vehicle) chase targetEnt.  
	TASK_VEHICLE_CHASE = function(driver, targetEnt) invoker.call(0x3C08A8E30363B353, driver, targetEnt) end,
	---pilot, vehicle and altitude are rather self-explanatory.  
	---  
	---p4: is unused variable in the function.  
	---  
	---entityToFollow: you can provide a Vehicle entity or a Ped entity, the heli will protect them.  
	---  
	---'targetSpeed':  The pilot will dip the nose AS MUCH AS POSSIBLE so as to reach this value AS FAST AS POSSIBLE.  As such, you'll want to modulate it as opposed to calling it via a hard-wired, constant #.  
	---  
	---'radius' isn't just "stop within radius of X of target" like with ground vehicles.  In this case, the pilot will fly an entire circle around 'radius' and continue to do so.  
	---  
	---NOT CONFIRMED:  p7 appears to be a FlyingStyle enum.  Still investigating it as of this writing, but playing around with values here appears to result in different -behavior- as opposed to offsetting coordinates, altitude, target speed, etc.  
	---  
	---NOTE: If the pilot finds enemies, it will engage them until it kills them, but will return to protect the ped/vehicle given shortly thereafter.  
	TASK_VEHICLE_HELI_PROTECT = function(pilot, vehicle, entityToFollow, targetSpeed, drivingFlags, radius, altitude, heliFlags) invoker.call(0x1E09C32048FEFD1C, pilot, vehicle, entityToFollow, targetSpeed, drivingFlags, radius, altitude, heliFlags) end,
	---Flag 8: Medium-aggressive boxing tactic with a bit of PIT  
	---Flag 1: Aggressive ramming of suspect  
	---Flag 2: Ram attempts  
	---Flag 32: Stay back from suspect, no tactical contact. Convoy-like.  
	---Flag 16: Ramming, seems to be slightly less aggressive than 1-2.  
	SET_TASK_VEHICLE_CHASE_BEHAVIOR_FLAG = function(ped, flag, set) invoker.call(0xCC665AAC360D31E7, ped, flag, set) end,
	---  
	SET_TASK_VEHICLE_CHASE_IDEAL_PURSUIT_DISTANCE = function(ped, distance) invoker.call(0x639B642FACBE4EDD, ped, distance) end,
	---Ped pilot should be in a heli.  
	---EntityToFollow can be a vehicle or Ped.  
	---  
	---x,y,z appear to be how close to the EntityToFollow the heli should be. Scripts use 0.0, 0.0, 80.0. Then the heli tries to position itself 80 units above the EntityToFollow. If you reduce it to -5.0, it tries to go below (if the EntityToFollow is a heli or plane)  
	---  
	---  
	---NOTE: If the pilot finds enemies, it will engage them, then remain there idle, not continuing to chase the Entity given.  
	TASK_HELI_CHASE = function(pilot, entityToFollow, x, y, z) invoker.call(0xAC83B1DB38D0ADA0, pilot, entityToFollow, x, y, z) end,
	---  
	TASK_PLANE_CHASE = function(pilot, entityToFollow, x, y, z) invoker.call(0x2D2386F273FF7A25, pilot, entityToFollow, x, y, z) end,
	---  
	TASK_PLANE_LAND = function(pilot, plane, runwayStartX, runwayStartY, runwayStartZ, runwayEndX, runwayEndY, runwayEndZ) invoker.call(0xBF19721FA34D32C0, pilot, plane, runwayStartX, runwayStartY, runwayStartZ, runwayEndX, runwayEndY, runwayEndZ) end,
	---  
	CLEAR_DEFAULT_PRIMARY_TASK = function(ped) invoker.call(0x6100B3CEFD43452E, ped) end,
	---This native is very useful when switching the player to a ped inside a vehicle that has a task assigned prior to the player switch.  
	---It is necessary to clear the ped's tasks AND call this native with the vehicle the player is switching into in order to allow the player to control the vehicle after the player switches.  
	CLEAR_PRIMARY_VEHICLE_TASK = function(vehicle) invoker.call(0xDBBC7A2432524127, vehicle) end,
	---  
	CLEAR_VEHICLE_CRASH_TASK = function(vehicle) invoker.call(0x53DDC75BC3AC0A90, vehicle) end,
	---  
	TASK_PLANE_GOTO_PRECISE_VTOL = function(ped, vehicle, x, y, z, flightHeight, minHeightAboveTerrain, useDesiredOrientation, desiredOrientation, autopilot) invoker.call(0xF7F9DCCA89E7505B, ped, vehicle, x, y, z, flightHeight, minHeightAboveTerrain, useDesiredOrientation, desiredOrientation, autopilot) end,
	---Used in am_vehicle_spawn.ysc and am_mp_submarine.ysc.  
	---  
	---p0 is always 0, p5 is always 1  
	---  
	---p1 is the vehicle handle of the submarine. Submarine must have a driver, but the ped handle is not passed to the native.  
	---  
	---Speed can be set by calling SET_DRIVE_TASK_CRUISE_SPEED after  
	TASK_SUBMARINE_GOTO_AND_STOP = function(ped, submarine, x, y, z, autopilot) invoker.call(0xC22B40579A498CA4, ped, submarine, x, y, z, autopilot) end,
	---Must have targetVehicle, targetPed, OR destination X/Y/Z set  
	---Will follow targeted vehicle/ped, or fly to destination  
	---Set whichever is not being used to 0  
	---  
	---  
	---Mission mode type:  
	--- - 4, 7: Forces heli to snap to the heading if set, flies to destination or tracks specified entity (mode 4 only works for coordinates, 7 works for coordinates OR ped/vehicle)  
	--- - 6: Attacks the target ped/vehicle with mounted weapons. If radius is set, will maintain that distance from target.  
	--- - 8: Makes the heli flee from the ped/vehicle/coordinate  
	--- - 9: Circles around target ped/vehicle, snaps to angle if set. Behavior flag (last parameter) of 2048 switches from counter-clockwise to clockwise circling. Does not work with coordinate destination.  
	--- - 10, 11: Follows ped/vehicle target and imitates target heading. Only works with ped/vehicle target, not coord target  
	--- - 19: Heli lands at specified coordinate, ignores heading (lands facing whatever direction it is facing when the task is started)  
	--- - 20: Makes the heli land when near target ped. It won't resume chasing.  
	--- - 21: Emulates a helicopter crash  
	--- - 23: makes the heli circle erratically around ped  
	---  
	---  
	---Heli will fly at maxSpeed (up to actual maximum speed defined by the model's handling config)  
	---You can use SET_DRIVE_TASK_CRUISE_SPEED to modulate the speed based on distance to the target without having to re-invoke the task native. Setting to 8.0 when close to the destination results in a much smoother approach.  
	---  
	---If minHeight and maxHeight are set, heli will fly between those specified elevations, relative to ground level and any obstructions/buildings below. You can specify -1 for either if you only want to specify one. Usually it is easiest to leave maxHeight at -1, and specify a reasonable minHeight to ensure clearance over any obstacles. Note this MUST be passed as an INT, not a FLOAT.   
	---  
	---Radius affects how closely the heli will follow tracked ped/vehicle, and when circling (mission type 9) sets the radius (in meters) that it will circle the target from  
	---  
	---Heading is -1.0 for default behavior, which will point the nose of the helicopter towards the destination. Set a heading and the heli will lock to that direction when near its destination/target, but may still turn towards the destination when flying at higher speed from a further distance.  
	---  
	---Behavior Flags is a bitwise value that modifies the AI behavior. Not clear what all flags do, but here are some guesses/notes:  
	---   1: Forces heading to face E  
	---   2: Unknown  
	---   4: Tight circles around coordinate destination  
	---   8: Unknown  
	---  16: Circles around coordinate destination facing towards destination  
	---  32: Flys to normally, then lands at coordinate destination and stays on the ground (using mission type 4)  
	---  64: Ignores obstacles when flying, will follow at specified minHeight above ground level but will not avoid buildings, vehicles, etc.  
	--- 128: Unknown  
	--- 256: Unknown  
	--- 512: Unknown  
	---1024: Unknown   
	---2048: Reverses direction of circling (mission type 9) to clockwise  
	---4096: Hugs closer to the ground, maintains minHeight from ground generally, but barely clears buildings and dips down more between buildings instead of taking a more efficient/safe route  
	---8192: Unknown  
	---  
	---Unk3 is a float value, you may see -1082130432 for this value in decompiled native scripts, this is the equivalent to -1.0f. Seems to affect acceleration/aggressiveness, but not sure exactly how it works. Higher value seems to result in lower acceleration/less aggressive flying. Almost always -1.0 in native scripts, occasionally 20.0 or 50.0. Setting to 400.0 seems to work well for making the pilot not overshoot the destination when using coordinate destination.  
	---  
	---Notes updated by PNWParksFan, May 2021  
	---  
	TASK_HELI_MISSION = function(pilot, aircraft, targetVehicle, targetPed, destinationX, destinationY, destinationZ, missionFlag, maxSpeed, radius, targetHeading, maxHeight, minHeight, slowDownDistance, behaviorFlags) invoker.call(0xDAD029E187A2BEB4, pilot, aircraft, targetVehicle, targetPed, destinationX, destinationY, destinationZ, missionFlag, maxSpeed, radius, targetHeading, maxHeight, minHeight, slowDownDistance, behaviorFlags) end,
	---  
	TASK_HELI_ESCORT_HELI = function(pilot, heli1, heli2, offsetX, offsetY, offsetZ) invoker.call(0xB385523325077210, pilot, heli1, heli2, offsetX, offsetY, offsetZ) end,
	---EXAMPLE USAGE:  
	---  
	---Fly around target (Precautiously, keeps high altitude):  
	---Function.Call(Hash.TASK_PLANE_MISSION, pilot, selectedAirplane, 0, 0, Target.X, Target.Y, Target.Z, 4, 100f, 0f, 90f, 0, 200f);  
	---  
	---Fly around target (Dangerously, keeps VERY low altitude):  
	---Function.Call(Hash.TASK_PLANE_MISSION, pilot, selectedAirplane, 0, 0, Target.X, Target.Y, Target.Z, 4, 100f, 0f, 90f, 0, -500f);  
	---  
	---Fly directly into target:  
	---Function.Call(Hash.TASK_PLANE_MISSION, pilot, selectedAirplane, 0, 0, Target.X, Target.Y, Target.Z, 4, 100f, 0f, 90f, 0, -5000f);  
	---  
	---EXPANDED INFORMATION FOR ADVANCED USAGE (custom pilot)  
	---  
	---'physicsSpeed': (THIS IS NOT YOUR ORDINARY SPEED PARAMETER: READ!!)  
	---Think of this -first- as a radius value, not a true speed value.  The ACTUAL effective speed of the plane will be that of the maximum speed permissible to successfully fly in a -circle- with a radius of 'physicsSpeed'.  This also means that the plane must complete a circle before it can begin its "bombing run", its straight line pass towards the target.  p9 appears to influence the angle at which a "bombing run" begins, although I can't confirm yet.  
	---  
	---VERY IMPORTANT: A "bombing run" will only occur if a plane can successfully determine a possible navigable route (the slower the value of 'physicsSpeed', the more precise the pilot can be due to less influence of physics on flightpath).  Otherwise, the pilot will continue to patrol around Destination (be it a dynamic Entity position vector or a fixed world coordinate vector.)  
	---  
	---0 = Plane's physics are almost entirely frozen, plane appears to "orbit" around precise destination point  
	---1-299 = Blend of "frozen, small radius" vs. normal vs. "accelerated, hyperfast, large radius"  
	---300+ =  Vehicle behaves entirely like a normal gameplay plane.  
	---  
	---'patrolBlend' (The lower the value, the more the Destination is treated as a "fly AT" rather than a "fly AROUND point".)  
	---  
	---Scenario: Destination is an Entity on ground level, wide open field  
	----5000 = Pilot kamikazes directly into Entity  
	----1000 = Pilot flies extremely low -around- Entity, very prone to crashing  
	----200 = Pilot flies lower than average around Entity.  
	---0 = Pilot flies around Entity, normal altitude  
	---200 = Pilot flies an extra eighty units or so higher than 0 while flying around Destination (this doesn't seem to correlate directly into distance units.)  
	---  
	----- Valid mission types found in the exe: --  
	---  
	---0 = None  
	---1 = Unk  
	---2 = CTaskVehicleRam  
	---3 = CTaskVehicleBlock  
	---4 = CTaskVehicleGoToPlane  
	---5 = CTaskVehicleStop  
	---6 = CTaskVehicleAttack  
	---7 = CTaskVehicleFollow  
	---8 = CTaskVehicleFleeAirborne  
	---9= CTaskVehicleCircle  
	---10 = CTaskVehicleEscort  
	---15 = CTaskVehicleFollowRecording  
	---16 = CTaskVehiclePoliceBehaviour  
	---17 = CTaskVehicleCrash  
	TASK_PLANE_MISSION = function(pilot, aircraft, targetVehicle, targetPed, destinationX, destinationY, destinationZ, missionFlag, angularDrag, targetReached, targetHeading, maxZ, minZ, precise) invoker.call(0x23703CD154E83B88, pilot, aircraft, targetVehicle, targetPed, destinationX, destinationY, destinationZ, missionFlag, angularDrag, targetReached, targetHeading, maxZ, minZ, precise) end,
	---  
	TASK_PLANE_TAXI = function(pilot, aircraft, x, y, z, cruiseSpeed, targetReached) invoker.call(0x92C360B5F15D2302, pilot, aircraft, x, y, z, cruiseSpeed, targetReached) end,
	---You need to call PED::SET_BLOCKING_OF_NON_TEMPORARY_EVENTS after TASK_BOAT_MISSION in order for the task to execute.  
	---  
	---Working example  
	---float vehicleMaxSpeed = VEHICLE::GET_VEHICLE_ESTIMATED_MAX_SPEED(ENTITY::GET_ENTITY_MODEL(pedVehicle));  
	---TASK::TASK_BOAT_MISSION(pedDriver, pedVehicle, 0, 0, waypointCoord.x, waypointCoord.y, waypointCoord.z, 4, vehicleMaxSpeed, 786469, -1.0, 7);  
	---PED::SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedDriver, 1);  
	---  
	---P8 appears to be driving style flag - see gtaforums.com/topic/822314-guide-driving-styles/ for documentation  
	TASK_BOAT_MISSION = function(pedDriver, vehicle, targetVehicle, targetPed, x, y, z, mission, maxSpeed, drivingStyle, targetReached, boatFlags) invoker.call(0x15C86013127CE63F, pedDriver, vehicle, targetVehicle, targetPed, x, y, z, mission, maxSpeed, drivingStyle, targetReached, boatFlags) end,
	---Example:  
	---  
	---TASK::TASK_DRIVE_BY(l_467[1/*22*/], PLAYER::PLAYER_PED_ID(), 0, 0.0, 0.0, 2.0, 300.0, 100, 0, ${firing_pattern_burst_fire_driveby});  
	---  
	---  
	---  
	---  
	---Needs working example. Doesn't seem to do anything.  
	---  
	---I marked p2 as targetVehicle as all these shooting related tasks seem to have that in common.  
	---I marked p6 as distanceToShoot as if you think of GTA's Logic with the native SET_VEHICLE_SHOOT natives, it won't shoot till it gets within a certain distance of the target.  
	---I marked p7 as pedAccuracy as it seems it's mostly 100 (Completely Accurate), 75, 90, etc. Although this could be the ammo count within the gun, but I highly doubt it. I will change this comment once I find out if it's ammo count or not.  
	TASK_DRIVE_BY = function(driverPed, targetPed, targetVehicle, targetX, targetY, targetZ, distanceToShoot, pedAccuracy, pushUnderneathDrivingTaskIfDriving, firingPattern) invoker.call(0x2F8AF0E82773A171, driverPed, targetPed, targetVehicle, targetX, targetY, targetZ, distanceToShoot, pedAccuracy, pushUnderneathDrivingTaskIfDriving, firingPattern) end,
	---For p1 & p2 (Ped, Vehicle). I could be wrong, as the only time this native is called in scripts is once and both are 0, but I assume this native will work like SET_MOUNTED_WEAPON_TARGET in which has the same exact amount of parameters and the 1st and last 3 parameters are right and the same for both natives.  
	SET_DRIVEBY_TASK_TARGET = function(shootingPed, targetPed, targetVehicle, x, y, z) invoker.call(0xE5B302114D8162EE, shootingPed, targetPed, targetVehicle, x, y, z) end,
	---  
	CLEAR_DRIVEBY_TASK_UNDERNEATH_DRIVING_TASK = function(ped) invoker.call(0xC35B5CDB2824CF69, ped) end,
	---  
	IS_DRIVEBY_TASK_UNDERNEATH_DRIVING_TASK = function(ped) return invoker.call(0x8785E6E40C7A8818, ped).bool end,
	---Forces the ped to use the mounted weapon.  
	---Returns false if task is not possible.  
	CONTROL_MOUNTED_WEAPON = function(ped) return invoker.call(0xDCFE42068FE0135A, ped).bool end,
	---Note: Look in decompiled scripts and the times that p1 and p2 aren't 0. They are filled with vars. If you look through out that script what other natives those vars are used in, you can tell p1 is a ped and p2 is a vehicle. Which most likely means if you want the mounted weapon to target a ped set targetVehicle to 0 or vice-versa.  
	SET_MOUNTED_WEAPON_TARGET = function(shootingPed, targetPed, targetVehicle, x, y, z, taskMode, ignoreTargetVehDeadCheck) invoker.call(0xCCD892192C6D2BB9, shootingPed, targetPed, targetVehicle, x, y, z, taskMode, ignoreTargetVehDeadCheck) end,
	---  
	IS_MOUNTED_WEAPON_TASK_UNDERNEATH_DRIVING_TASK = function(ped) return invoker.call(0xA320EF046186FA3B, ped).bool end,
	---Actually has 3 params, not 2.  
	---  
	---p0: Ped  
	---p1: int (or bool?)  
	---p2: int  
	TASK_USE_MOBILE_PHONE = function(ped, usePhone, desiredPhoneMode) invoker.call(0xBD2A8EC3AF4DE7DB, ped, usePhone, desiredPhoneMode) end,
	---  
	TASK_USE_MOBILE_PHONE_TIMED = function(ped, duration) invoker.call(0x5EE02954A14C69DB, ped, duration) end,
	---p2 tend to be 16, 17 or 1  
	---p3 to p7 tend to be 0.0  
	TASK_CHAT_TO_PED = function(ped, target, flags, goToLocationX, goToLocationY, goToLocationZ, headingDegs, idleTime) invoker.call(0x8C338E0263E4FD19, ped, target, flags, goToLocationX, goToLocationY, goToLocationZ, headingDegs, idleTime) end,
	---Seat Numbers  
	----------------------------------  
	---Driver = -1  
	---Any = -2  
	---Left-Rear = 1  
	---Right-Front = 0  
	---Right-Rear = 2  
	---Extra seats = 3-14(This may differ from vehicle type e.g. Firetruck Rear Stand, Ambulance Rear)  
	TASK_WARP_PED_INTO_VEHICLE = function(ped, vehicle, seat) invoker.call(0x9A7D091411C5F684, ped, vehicle, seat) end,
	---//this part of the code is to determine at which entity the player is aiming, for example if you want to create a mod where you give orders to peds  
	---Entity aimedentity;  
	---Player player = PLAYER::PLAYER_ID();  
	---PLAYER::_GET_AIMED_ENTITY(player, &aimedentity);  
	---  
	---//bg is an array of peds  
	---TASK::TASK_SHOOT_AT_ENTITY(bg[i], aimedentity, 5000, MISC::GET_HASH_KEY("FIRING_PATTERN_FULL_AUTO"));  
	---  
	---in practical usage, getting the entity the player is aiming at and then task the peds to shoot at the entity, at a button press event would be better.  
	---  
	---Firing Pattern Hash Information: https://pastebin.com/Px036isB  
	TASK_SHOOT_AT_ENTITY = function(entity, target, duration, firingPattern) invoker.call(0x08DA95E8298AE772, entity, target, duration, firingPattern) end,
	---Climbs or vaults the nearest thing.  
	---usePlayerLaunchForce is unused.  
	TASK_CLIMB = function(ped, usePlayerLaunchForce) invoker.call(0x89D9FCC2435112F1, ped, usePlayerLaunchForce) end,
	---  
	TASK_CLIMB_LADDER = function(ped, fast) invoker.call(0xB6C987F9285A3814, ped, fast) end,
	---Attaches a ped to a rope and allows player control to rappel down a wall. Disables all collisions while on the rope.  
	---p10: Usually 1 in the scripts, clipSet: Clipset to use for the task, minZ: Minimum Z that the player can descend to, ropeHandle: Rope to attach this task to created with ADD_ROPE  
	TASK_RAPPEL_DOWN_WALL_USING_CLIPSET_OVERRIDE = function(ped, x1, y1, z1, x2, y2, z2, minZ, ropeHandle, clipSet, p10, p11) invoker.call(0xEAF66ACDDC794793, ped, x1, y1, z1, x2, y2, z2, minZ, ropeHandle, clipSet, p10, p11) end,
	---  
	GET_TASK_RAPPEL_DOWN_WALL_STATE = function(ped) return invoker.call(0x9D252648778160DF, ped).int end,
	---Immediately stops the pedestrian from whatever it's doing. They stop fighting, animations, etc. they forget what they were doing.  
	CLEAR_PED_TASKS_IMMEDIATELY = function(ped) invoker.call(0xAAA34F8A7CB32098, ped) end,
	---  
	TASK_PERFORM_SEQUENCE_FROM_PROGRESS = function(ped, taskIndex, progress1, progress2) invoker.call(0x89221B16730234F0, ped, taskIndex, progress1, progress2) end,
	---This native does absolutely nothing, just a nullsub  
	---  
	---R* Comment:  
	---SET_NEXT_DESIRED_MOVE_STATE - Function is deprecated - do not use anymore  
	SET_NEXT_DESIRED_MOVE_STATE = function(nextMoveState) invoker.call(0xF1B9F16E89E2C93A, nextMoveState) end,
	---  
	SET_PED_DESIRED_MOVE_BLEND_RATIO = function(ped, newMoveBlendRatio) invoker.call(0x1E982AC8716912C5, ped, newMoveBlendRatio) end,
	---  
	GET_PED_DESIRED_MOVE_BLEND_RATIO = function(ped) return invoker.call(0x8517D4A6CA8513ED, ped).float end,
	---eg  
	---  
	--- TASK::TASK_GOTO_ENTITY_AIMING(v_2, PLAYER::PLAYER_PED_ID(), 5.0, 25.0);  
	---  
	---ped = Ped you want to perform this task.  
	---target = the Entity they should aim at.  
	---distanceToStopAt = distance from the target, where the ped should stop to aim.  
	---StartAimingDist = distance where the ped should start to aim.  
	TASK_GOTO_ENTITY_AIMING = function(ped, target, distanceToStopAt, StartAimingDist) invoker.call(0xA9DA48FAB8A76C12, ped, target, distanceToStopAt, StartAimingDist) end,
	---p1 is always GET_HASH_KEY("empty") in scripts, for the rare times this is used  
	TASK_SET_DECISION_MAKER = function(ped, decisionMakerId) invoker.call(0xEB8517DDA73720DA, ped, decisionMakerId) end,
	---  
	TASK_SET_SPHERE_DEFENSIVE_AREA = function(ped, x, y, z, radius) invoker.call(0x933C06518B52A9A4, ped, x, y, z, radius) end,
	---  
	TASK_CLEAR_DEFENSIVE_AREA = function(ped) invoker.call(0x95A6C46A31D1917D, ped) end,
	---  
	TASK_PED_SLIDE_TO_COORD = function(ped, x, y, z, heading, speed) invoker.call(0xD04FE6765D990A06, ped, x, y, z, heading, speed) end,
	---  
	TASK_PED_SLIDE_TO_COORD_HDG_RATE = function(ped, x, y, z, heading, speed, headingChangeRate) invoker.call(0x5A4A6A6D3DC64F52, ped, x, y, z, heading, speed, headingChangeRate) end,
	---  
	ADD_COVER_POINT = function(x, y, z, direction, usage, height, arc, isPriority) return invoker.call(0xD5C12A75C7B9497F, x, y, z, direction, usage, height, arc, isPriority).int end,
	---  
	REMOVE_COVER_POINT = function(coverpoint) invoker.call(0xAE287C923D891715, coverpoint) end,
	---Checks if there is a cover point at position  
	DOES_SCRIPTED_COVER_POINT_EXIST_AT_COORDS = function(x, y, z) return invoker.call(0xA98B8E3C088E5A31, x, y, z).bool end,
	---  
	GET_SCRIPTED_COVER_POINT_COORDS = function(coverpoint) return invoker.call(0x594A1028FC2A3E85, coverpoint).scr_vec3 end,
	---  
	ADD_SCRIPTED_COVER_AREA = function(x, y, z, radius) invoker.call(0x28B7B9BFDAF274AA, x, y, z, radius) end,
	---Makes the specified ped attack the target ped.  
	---p2 should be 0  
	---p3 should be 16  
	TASK_COMBAT_PED = function(ped, targetPed, combatFlags, threatResponseFlags) invoker.call(0xF166E48407BAC484, ped, targetPed, combatFlags, threatResponseFlags) end,
	---  
	TASK_COMBAT_PED_TIMED = function(ped, target, time, flags) invoker.call(0x944F30DCB7096BDE, ped, target, time, flags) end,
	---  
	TASK_SEEK_COVER_FROM_POS = function(ped, x, y, z, duration, allowPeekingAndFiring) invoker.call(0x75AC2B60386D89F2, ped, x, y, z, duration, allowPeekingAndFiring) end,
	---  
	TASK_SEEK_COVER_FROM_PED = function(ped, target, duration, allowPeekingAndFiring) invoker.call(0x84D32B3BEC531324, ped, target, duration, allowPeekingAndFiring) end,
	---p5 is always -1  
	TASK_SEEK_COVER_TO_COVER_POINT = function(ped, coverpoint, x, y, z, time, allowPeekingAndFiring) invoker.call(0xD43D95C7A869447F, ped, coverpoint, x, y, z, time, allowPeekingAndFiring) end,
	---p8 causes the ped to take the shortest route to the cover position. It may have something to do with navmesh or pathfinding mechanics.  
	---  
	---from michael2:  
	---TASK::TASK_SEEK_COVER_TO_COORDS(ped, 967.5164794921875, -2121.603515625, 30.479299545288086, 978.94677734375, -2125.84130859375, 29.4752, -1, 1);  
	---  
	---  
	---appears to be shorter variation  
	---from michael3:  
	---TASK::TASK_SEEK_COVER_TO_COORDS(ped, -2231.011474609375, 263.6326599121094, 173.60195922851562, -1, 0);  
	TASK_SEEK_COVER_TO_COORDS = function(ped, x1, y1, z1, x2, y2, z2, timeout, shortRoute) invoker.call(0x39246A6958EF072C, ped, x1, y1, z1, x2, y2, z2, timeout, shortRoute) end,
	---  
	TASK_PUT_PED_DIRECTLY_INTO_COVER = function(ped, x, y, z, time, allowPeekingAndFiring, blendInDuration, forceInitialFacingDirection, forceFaceLeft, identifier, doEntry) invoker.call(0x4172393E6BE1FECE, ped, x, y, z, time, allowPeekingAndFiring, blendInDuration, forceInitialFacingDirection, forceFaceLeft, identifier, doEntry) end,
	---  
	TASK_WARP_PED_DIRECTLY_INTO_COVER = function(ped, time, allowPeekingAndFiring, forceInitialFacingDirection, forceFaceLeft, identifier) invoker.call(0x6E01E9E8D89F8276, ped, time, allowPeekingAndFiring, forceInitialFacingDirection, forceFaceLeft, identifier) end,
	---p1 is 1, 2, or 3 in scripts  
	TASK_EXIT_COVER = function(ped, exitType, x, y, z) invoker.call(0x79B258E397854D29, ped, exitType, x, y, z) end,
	---from armenian3.c4  
	---  
	---TASK::TASK_PUT_PED_DIRECTLY_INTO_MELEE(PlayerPed, armenianPed, 0.0, -1.0, 0.0, 0);  
	---  
	TASK_PUT_PED_DIRECTLY_INTO_MELEE = function(ped, meleeTarget, blendInDuration, timeInMelee, strafePhaseSync, aiCombatFlags) invoker.call(0x1C6CD14A876FFE39, ped, meleeTarget, blendInDuration, timeInMelee, strafePhaseSync, aiCombatFlags) end,
	---used in sequence task  
	---  
	---both parameters seems to be always 0  
	TASK_TOGGLE_DUCK = function(ped, toggleType) invoker.call(0xAC96609B9995EDF8, ped, toggleType) end,
	---From re_prisonvanbreak:  
	---  
	---TASK::TASK_GUARD_CURRENT_POSITION(l_DD, 35.0, 35.0, 1);  
	TASK_GUARD_CURRENT_POSITION = function(ped, maxPatrolProximity, defensiveAreaRadius, setDefensiveArea) invoker.call(0x4A58A47A72E3FCB4, ped, maxPatrolProximity, defensiveAreaRadius, setDefensiveArea) end,
	---  
	TASK_GUARD_ASSIGNED_DEFENSIVE_AREA = function(ped, x, y, z, heading, maxPatrolProximity, timer) invoker.call(0xD2A207EEBDF9889B, ped, x, y, z, heading, maxPatrolProximity, timer) end,
	---  
	TASK_GUARD_SPHERE_DEFENSIVE_AREA = function(ped, defendPositionX, defendPositionY, defendPositionZ, heading, maxPatrolProximity, time, x, y, z, defensiveAreaRadius) invoker.call(0xC946FE14BE0EB5E2, ped, defendPositionX, defendPositionY, defendPositionZ, heading, maxPatrolProximity, time, x, y, z, defensiveAreaRadius) end,
	---scenarioName example: "WORLD_HUMAN_GUARD_STAND"  
	TASK_STAND_GUARD = function(ped, x, y, z, heading, scenarioName) invoker.call(0xAE032F8BBA959E90, ped, x, y, z, heading, scenarioName) end,
	---  
	SET_DRIVE_TASK_CRUISE_SPEED = function(driver, cruiseSpeed) invoker.call(0x5C9B84BD7D31D908, driver, cruiseSpeed) end,
	---  
	SET_DRIVE_TASK_MAX_CRUISE_SPEED = function(ped, speed, updateBaseTask) invoker.call(0x404A5AA9B9F0B746, ped, speed, updateBaseTask) end,
	---This native is used to set the driving style for specific ped.  
	---  
	---Driving styles id seems to be:  
	---786468  
	---262144  
	---786469  
	---  
	---http://gtaforums.com/topic/822314-guide-driving-styles/  
	SET_DRIVE_TASK_DRIVING_STYLE = function(ped, drivingStyle) invoker.call(0xDACE1BE37D88AF67, ped, drivingStyle) end,
	---  
	ADD_COVER_BLOCKING_AREA = function(startX, startY, startZ, endX, endY, endZ, blockObjects, blockVehicles, blockMap, blockPlayer) invoker.call(0x45C597097DD7CB81, startX, startY, startZ, endX, endY, endZ, blockObjects, blockVehicles, blockMap, blockPlayer) end,
	---  
	REMOVE_ALL_COVER_BLOCKING_AREAS = function() invoker.call(0xDB6708C0B46F56D8) end,
	---  
	REMOVE_COVER_BLOCKING_AREAS_AT_POSITION = function(x, y, z) invoker.call(0xFA83CA6776038F64, x, y, z) end,
	---  
	REMOVE_SPECIFIC_COVER_BLOCKING_AREAS = function(startX, startY, startZ, endX, endY, endZ, blockObjects, blockVehicles, blockMap, blockPlayer) invoker.call(0x1F351CF1C6475734, startX, startY, startZ, endX, endY, endZ, blockObjects, blockVehicles, blockMap, blockPlayer) end,
	---Plays a scenario on a Ped at their current location.  
	---  
	---unkDelay - Usually 0 or -1, doesn't seem to have any effect. Might be a delay between sequences.  
	---playEnterAnim - Plays the "Enter" anim if true, otherwise plays the "Exit" anim. Scenarios that don't have any "Enter" anims won't play if this is set to true.  
	---  
	-------  
	---  
	---From "am_hold_up.ysc.c4" at line 339:  
	---  
	---TASK::TASK_START_SCENARIO_IN_PLACE(NETWORK::NET_TO_PED(l_8D._f4), sub_adf(), 0, 1);  
	---  
	---I'm unsure of what the last two parameters are, however sub_adf() randomly returns 1 of 3 scenarios, those being:  
	---WORLD_HUMAN_SMOKING  
	---WORLD_HUMAN_HANG_OUT_STREET  
	---WORLD_HUMAN_STAND_MOBILE  
	---  
	---This makes sense, as these are what I commonly see when going by a liquor store.  
	----------------------------  
	---List of scenarioNames: https://pastebin.com/6mrYTdQv  
	---(^ Thank you so fucking much for this)  
	---  
	---Also these:  
	---WORLD_FISH_FLEE  
	---DRIVE  
	---WORLD_HUMAN_HIKER  
	---WORLD_VEHICLE_ATTRACTOR  
	---WORLD_VEHICLE_BICYCLE_MOUNTAIN  
	---WORLD_VEHICLE_BIKE_OFF_ROAD_RACE  
	---WORLD_VEHICLE_BIKER  
	---WORLD_VEHICLE_CONSTRUCTION_PASSENGERS  
	---WORLD_VEHICLE_CONSTRUCTION_SOLO  
	---WORLD_VEHICLE_DRIVE_PASSENGERS  
	---WORLD_VEHICLE_DRIVE_SOLO  
	---WORLD_VEHICLE_EMPTY  
	---WORLD_VEHICLE_PARK_PARALLEL  
	---WORLD_VEHICLE_PARK_PERPENDICULAR_NOSE_IN  
	---WORLD_VEHICLE_POLICE_BIKE  
	---WORLD_VEHICLE_POLICE_CAR  
	---WORLD_VEHICLE_POLICE_NEXT_TO_CAR  
	---WORLD_VEHICLE_SALTON_DIRT_BIKE  
	---WORLD_VEHICLE_TRUCK_LOGS  
	---  
	---Full list of ped scenarios by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/scenariosCompact.json  
	TASK_START_SCENARIO_IN_PLACE = function(ped, scenarioName, unkDelay, playEnterAnim) invoker.call(0x142A02425FF02BD9, ped, scenarioName, unkDelay, playEnterAnim) end,
	---Full list of ped scenarios by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/scenariosCompact.json  
	---  
	---Also a few more listed at TASK::TASK_START_SCENARIO_IN_PLACE just above.  
	------------------  
	---The first parameter in every scenario has always been a Ped of some sort. The second like TASK_START_SCENARIO_IN_PLACE is the name of the scenario.   
	---  
	---The next 4 parameters were harder to decipher. After viewing "hairdo_shop_mp.ysc.c4", and being confused from seeing the case in other scripts, they passed the first three of the arguments as one array from a function, and it looked like it was obviously x, y, and z.  
	---  
	---I haven't seen the sixth parameter go to or over 360, making me believe that it is rotation, but I really can't confirm anything.  
	---  
	---I have no idea what the last 3 parameters are, but I'll try to find out.  
	---  
	----going on the last 3 parameters, they appear to always be "0, 0, 1"  
	---  
	---p6 -1 also used in scrips  
	---  
	---p7 used for sitting scenarios  
	---  
	---p8 teleports ped to position  
	TASK_START_SCENARIO_AT_POSITION = function(ped, scenarioName, x, y, z, heading, duration, sittingScenario, teleport) invoker.call(0xFA4EFC79F69D4F07, ped, scenarioName, x, y, z, heading, duration, sittingScenario, teleport) end,
	---Updated variables  
	---  
	---An alternative to TASK::TASK_USE_NEAREST_SCENARIO_TO_COORD_WARP. Makes the ped walk to the scenario instead.  
	TASK_USE_NEAREST_SCENARIO_TO_COORD = function(ped, x, y, z, distance, duration) invoker.call(0x277F471BA9DB000B, ped, x, y, z, distance, duration) end,
	---  
	TASK_USE_NEAREST_SCENARIO_TO_COORD_WARP = function(ped, x, y, z, radius, timeToLeave) invoker.call(0x58E2E0F23F6B76C3, ped, x, y, z, radius, timeToLeave) end,
	---p5 is always 0 in scripts  
	TASK_USE_NEAREST_SCENARIO_CHAIN_TO_COORD = function(ped, x, y, z, maxRange, timeToLeave) invoker.call(0x9FDA1B3D7E7028B3, ped, x, y, z, maxRange, timeToLeave) end,
	---p5 is always -1 or 0 in scripts  
	TASK_USE_NEAREST_SCENARIO_CHAIN_TO_COORD_WARP = function(ped, x, y, z, radius, timeToLeave) invoker.call(0x97A28E63F0BA5631, ped, x, y, z, radius, timeToLeave) end,
	---  
	DOES_SCENARIO_EXIST_IN_AREA = function(x, y, z, radius, mustBeFree) return invoker.call(0x5A59271FFADD33C1, x, y, z, radius, mustBeFree).bool end,
	---  
	DOES_SCENARIO_OF_TYPE_EXIST_IN_AREA = function(x, y, z, scenarioName, radius, mustBeFree) return invoker.call(0x0A9D0C2A3BBC86C1, x, y, z, scenarioName, radius, mustBeFree).bool end,
	---  
	IS_SCENARIO_OCCUPIED = function(x, y, z, maxRange, onlyUsersActuallyAtScenario) return invoker.call(0x788756D73AC2E07C, x, y, z, maxRange, onlyUsersActuallyAtScenario).bool end,
	---  
	PED_HAS_USE_SCENARIO_TASK = function(ped) return invoker.call(0x295E3CCEC879CCD7, ped).bool end,
	---Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json  
	PLAY_ANIM_ON_RUNNING_SCENARIO = function(ped, animDict, animName) invoker.call(0x748040460F8DF5DC, ped, animDict, animName) end,
	---Full list of scenario groups used in scripts by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/scenarioGroupNames.json  
	---Occurrences in the b617d scripts:  
	---  
	---"ARMY_GUARD",  
	---"ARMY_HELI",  
	---"Cinema_Downtown",  
	---"Cinema_Morningwood",  
	---"Cinema_Textile",  
	---"City_Banks",  
	---"Countryside_Banks",  
	---"DEALERSHIP",  
	---"GRAPESEED_PLANES",  
	---"KORTZ_SECURITY",  
	---"LOST_BIKERS",  
	---"LSA_Planes",  
	---"LSA_Planes",  
	---"MP_POLICE",  
	---"Observatory_Bikers",   
	---"POLICE_POUND1",  
	---"POLICE_POUND2",  
	---"POLICE_POUND3",  
	---"POLICE_POUND4",  
	---"POLICE_POUND5"  
	---"QUARRY",  
	---"SANDY_PLANES",  
	---"SCRAP_SECURITY",  
	---"SEW_MACHINE",  
	---"SOLOMON_GATE",  
	---"Triathlon_1_Start",   
	---"Triathlon_2_Start",   
	---"Triathlon_3_Start"  
	---  
	---Sometimes used with IS_SCENARIO_GROUP_ENABLED:  
	---if (TASK::DOES_SCENARIO_GROUP_EXIST("Observatory_Bikers") && (!TASK::IS_SCENARIO_GROUP_ENABLED("Observatory_Bikers"))) {  
	---else if (TASK::IS_SCENARIO_GROUP_ENABLED("BLIMP")) {  
	---  
	DOES_SCENARIO_GROUP_EXIST = function(scenarioGroup) return invoker.call(0xF9034C136C9E00D3, scenarioGroup).bool end,
	---Full list of scenario groups used in scripts by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/scenarioGroupNames.json  
	---Occurrences in the b617d scripts:   
	---  
	--- "ARMY_GUARD",  
	--- "ARMY_HELI",  
	--- "BLIMP",  
	--- "Cinema_Downtown",  
	--- "Cinema_Morningwood",  
	--- "Cinema_Textile",  
	--- "City_Banks",  
	--- "Countryside_Banks",  
	--- "DEALERSHIP",  
	--- "KORTZ_SECURITY",  
	--- "LSA_Planes",  
	--- "MP_POLICE",  
	--- "Observatory_Bikers",  
	--- "POLICE_POUND1",  
	--- "POLICE_POUND2",  
	--- "POLICE_POUND3",  
	--- "POLICE_POUND4",  
	--- "POLICE_POUND5",  
	--- "Rampage1",  
	--- "SANDY_PLANES",  
	--- "SCRAP_SECURITY",  
	--- "SEW_MACHINE",  
	--- "SOLOMON_GATE"  
	---  
	---Sometimes used with DOES_SCENARIO_GROUP_EXIST:  
	---if (TASK::DOES_SCENARIO_GROUP_EXIST("Observatory_Bikers") &&   (!TASK::IS_SCENARIO_GROUP_ENABLED("Observatory_Bikers"))) {  
	---else if (TASK::IS_SCENARIO_GROUP_ENABLED("BLIMP")) {  
	IS_SCENARIO_GROUP_ENABLED = function(scenarioGroup) return invoker.call(0x367A09DED4E05B99, scenarioGroup).bool end,
	---Full list of scenario groups used in scripts by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/scenarioGroupNames.json  
	---Occurrences in the b617d scripts: https://pastebin.com/Tvg2PRHU  
	SET_SCENARIO_GROUP_ENABLED = function(scenarioGroup, enabled) invoker.call(0x02C8E5B49848664E, scenarioGroup, enabled) end,
	---  
	RESET_SCENARIO_GROUPS_ENABLED = function() invoker.call(0xDD902D0349AFAD3A) end,
	---Full list of scenario groups used in scripts by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/scenarioGroupNames.json  
	---Groups found in the scripts used with this native:  
	---  
	---"AMMUNATION",  
	---"QUARRY",  
	---"Triathlon_1",  
	---"Triathlon_2",  
	---"Triathlon_3"  
	SET_EXCLUSIVE_SCENARIO_GROUP = function(scenarioGroup) invoker.call(0x535E97E1F7FC0C6A, scenarioGroup) end,
	---  
	RESET_EXCLUSIVE_SCENARIO_GROUP = function() invoker.call(0x4202BBCB8684563D) end,
	---Full list of scenario types used in scripts by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/scenariosCompact.json  
	---Occurrences in the b617d scripts:  
	---"PROP_HUMAN_SEAT_CHAIR",  
	---"WORLD_HUMAN_DRINKING",  
	---"WORLD_HUMAN_HANG_OUT_STREET",  
	---"WORLD_HUMAN_SMOKING",  
	---"WORLD_MOUNTAIN_LION_WANDER",  
	---"WORLD_HUMAN_DRINKING"  
	---  
	---Sometimes used together with MISC::IS_STRING_NULL_OR_EMPTY in the scripts.  
	---  
	---scenarioType could be the same as scenarioName, used in for example TASK::TASK_START_SCENARIO_AT_POSITION.  
	---  
	IS_SCENARIO_TYPE_ENABLED = function(scenarioType) return invoker.call(0x3A815DB3EA088722, scenarioType).bool end,
	---Full list of scenario types used in scripts by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/scenariosCompact.json  
	---seems to enable/disable specific scenario-types from happening in the game world.  
	---  
	---Here are some scenario types from the scripts:  
	---"WORLD_MOUNTAIN_LION_REST"                                               
	---"WORLD_MOUNTAIN_LION_WANDER"                                              
	---"DRIVE"                                                                    
	---"WORLD_VEHICLE_POLICE_BIKE"                                               
	---"WORLD_VEHICLE_POLICE_CAR"                                               
	---"WORLD_VEHICLE_POLICE_NEXT_TO_CAR"                                          
	---"WORLD_VEHICLE_DRIVE_SOLO"                                                   
	---"WORLD_VEHICLE_BIKER"                                                        
	---"WORLD_VEHICLE_DRIVE_PASSENGERS"                                             
	---"WORLD_VEHICLE_SALTON_DIRT_BIKE"                                             
	---"WORLD_VEHICLE_BICYCLE_MOUNTAIN"                                             
	---"PROP_HUMAN_SEAT_CHAIR"                                               
	---"WORLD_VEHICLE_ATTRACTOR"                                               
	---"WORLD_HUMAN_LEANING"                                                   
	---"WORLD_HUMAN_HANG_OUT_STREET"                                          
	---"WORLD_HUMAN_DRINKING"                                                  
	---"WORLD_HUMAN_SMOKING"                                                  
	---"WORLD_HUMAN_GUARD_STAND"                                              
	---"WORLD_HUMAN_CLIPBOARD"                                                
	---"WORLD_HUMAN_HIKER"                                                    
	---"WORLD_VEHICLE_EMPTY"                                                        
	---"WORLD_VEHICLE_BIKE_OFF_ROAD_RACE"                                        
	---"WORLD_HUMAN_PAPARAZZI"                                                 
	---"WORLD_VEHICLE_PARK_PERPENDICULAR_NOSE_IN"                              
	---"WORLD_VEHICLE_PARK_PARALLEL"                                                
	---"WORLD_VEHICLE_CONSTRUCTION_SOLO"                                 
	---"WORLD_VEHICLE_CONSTRUCTION_PASSENGERS"                                                                      
	---"WORLD_VEHICLE_TRUCK_LOGS"  
	---  
	---scenarioType could be the same as scenarioName, used in for example TASK::TASK_START_SCENARIO_AT_POSITION.  
	SET_SCENARIO_TYPE_ENABLED = function(scenarioType, toggle) invoker.call(0xEB47EC4E34FB7EE1, scenarioType, toggle) end,
	---  
	RESET_SCENARIO_TYPES_ENABLED = function() invoker.call(0x0D40EE2A7F2B2D6D) end,
	---  
	IS_PED_ACTIVE_IN_SCENARIO = function(ped) return invoker.call(0xAA135F9482C82CC3, ped).bool end,
	---Used only once (am_mp_property_int)  
	---  
	---ped was PLAYER_PED_ID()  
	---  
	---Related to CTaskAmbientClips.  
	IS_PED_PLAYING_BASE_CLIP_IN_SCENARIO = function(ped) return invoker.call(0x621C6E4729388E41, ped).bool end,
	---Appears only in fm_mission_controller and used only 3 times.  
	---  
	---ped was always PLAYER_PED_ID()  
	---p1 was always true  
	---p2 was always true  
	SET_PED_CAN_PLAY_AMBIENT_IDLES = function(ped, blockIdleClips, removeIdleClipIfPlaying) invoker.call(0x8FD89A6240813FD0, ped, blockIdleClips, removeIdleClipIfPlaying) end,
	---Despite its name, it only attacks ONE hated target. The one closest to the specified position.  
	TASK_COMBAT_HATED_TARGETS_IN_AREA = function(ped, x, y, z, radius, combatFlags) invoker.call(0x4CF5F55DAC3280A0, ped, x, y, z, radius, combatFlags) end,
	---Despite its name, it only attacks ONE hated target. The one closest hated target.  
	---  
	---p2 seems to be always 0  
	TASK_COMBAT_HATED_TARGETS_AROUND_PED = function(ped, radius, combatFlags) invoker.call(0x7BF835BB9E2698C8, ped, radius, combatFlags) end,
	---  
	TASK_COMBAT_HATED_TARGETS_AROUND_PED_TIMED = function(ped, radius, time, combatFlags) invoker.call(0x2BBA30B854534A0C, ped, radius, time, combatFlags) end,
	---In every case of this native, I've only seen the first parameter passed as 0, although I believe it's a Ped after seeing tasks around it using 0. That's because it's used in a Sequence Task.  
	---  
	---The last 3 parameters are definitely coordinates after seeing them passed in other scripts, and even being used straight from the player's coordinates.  
	------  
	---It seems that - in the decompiled scripts - this native was used on a ped who was in a vehicle to throw a projectile out the window at the player. This is something any ped will naturally do if they have a throwable and they are doing driveby-combat (although not very accurately).  
	---It is possible, however, that this is how SWAT throws smoke grenades at the player when in cover.  
	-------------------------------------------------------  
	---The first comment is right it definately is the ped as if you look in script finale_heist2b.c line 59628 in Xbox Scripts atleast you will see task_throw_projectile and the first param is Local_559[2 <14>] if you look above it a little bit line 59622 give_weapon_to_ped uses the same exact param Local_559[2 <14>] and we all know the first param of that native is ped. So it guaranteed has to be ped. 0 just may mean to use your ped by default for some reason.  
	TASK_THROW_PROJECTILE = function(ped, x, y, z, ignoreCollisionEntityIndex, createInvincibleProjectile) invoker.call(0x7285951DBF6B5A51, ped, x, y, z, ignoreCollisionEntityIndex, createInvincibleProjectile) end,
	---  
	TASK_SWAP_WEAPON = function(ped, drawWeapon) invoker.call(0xA21C51255B205245, ped, drawWeapon) end,
	---The 2nd param (drawWeapon) is not implemented.  
	---  
	--------------------------------------------------------------------------  
	---  
	---The only occurrence I found in a R* script ("assassin_construction.ysc.c4"):  
	---  
	---            if (((v_3 < v_4) && (TASK::GET_SCRIPT_TASK_STATUS(PLAYER::PLAYER_PED_ID(), 0x6a67a5cc) != 1)) && (v_5 > v_3)) {  
	---                TASK::TASK_RELOAD_WEAPON(PLAYER::PLAYER_PED_ID(), 1);  
	---            }  
	TASK_RELOAD_WEAPON = function(ped, drawWeapon) invoker.call(0x62D2916F56B9CD2D, ped, drawWeapon) end,
	---  
	IS_PED_GETTING_UP = function(ped) return invoker.call(0x2A74E1D5F2F00EEC, ped).bool end,
	---EX: Function.Call(Ped1, Ped2, Time, 0);  
	---  
	---The last parameter is always 0 for some reason I do not know. The first parameter is the pedestrian who will writhe to the pedestrian in the other parameter. The third paremeter is how long until the Writhe task ends. When the task ends, the ped will die. If set to -1, he will not die automatically, and the task will continue until something causes it to end. This can be being touched by an entity, being shot, explosion, going into ragdoll, having task cleared. Anything that ends the current task will kill the ped at this point.  
	---  
	---  
	---  
	---Third parameter does not appear to be time. The last parameter is not implemented (It's not used, regardless of value).  
	TASK_WRITHE = function(ped, target, minFireLoops, startState, forceShootOnGround, shootFromGroundTimer) invoker.call(0xCDDC2B77CE54AC6E, ped, target, minFireLoops, startState, forceShootOnGround, shootFromGroundTimer) end,
	---This native checks if a ped is on the ground, in pain from a (gunshot) wound.  
	---Returns `true` if the ped is in writhe, `false` otherwise.  
	IS_PED_IN_WRITHE = function(ped) return invoker.call(0xDEB6D52126E7D640, ped).bool end,
	--- patrolRoutes found in the b617d scripts:  
	--- "miss_Ass0",  
	--- "miss_Ass1",  
	--- "miss_Ass2",  
	--- "miss_Ass3",  
	--- "miss_Ass4",  
	--- "miss_Ass5",  
	--- "miss_Ass6",  
	--- "MISS_PATROL_6",  
	--- "MISS_PATROL_7",  
	--- "MISS_PATROL_8",  
	--- "MISS_PATROL_9",  
	--- "miss_Tower_01",  
	--- "miss_Tower_02",  
	--- "miss_Tower_03",  
	--- "miss_Tower_04",  
	--- "miss_Tower_05",  
	--- "miss_Tower_06",  
	--- "miss_Tower_07",  
	--- "miss_Tower_08",  
	--- "miss_Tower_10"  
	OPEN_PATROL_ROUTE = function(patrolRoute) invoker.call(0xA36BFB5EE89F3D82, patrolRoute) end,
	---  
	CLOSE_PATROL_ROUTE = function() invoker.call(0xB043ECA801B8CBC1) end,
	---Example:   
	---TASK::ADD_PATROL_ROUTE_NODE(2, "WORLD_HUMAN_GUARD_STAND", -193.4915, -2378.864990234375, 10.9719, -193.4915, -2378.864990234375, 10.9719, 3000);  
	---  
	---p0 is between 0 and 4 in the scripts.  
	---  
	---p1 is "WORLD_HUMAN_GUARD_STAND" or "StandGuard".  
	---  
	---p2, p3 and p4 is only one parameter sometimes in the scripts. Most likely a Vector3 hence p2, p3 and p4 are coordinates.   
	---Examples:   
	---TASK::ADD_PATROL_ROUTE_NODE(1, "WORLD_HUMAN_GUARD_STAND", l_739[7/*3*/], 0.0, 0.0, 0.0, 0);  
	---  
	---TASK::ADD_PATROL_ROUTE_NODE(1, "WORLD_HUMAN_GUARD_STAND", l_B0[17/*44*/]._f3, l_B0[17/*44*/]._f3, 2000);  
	---  
	---p5, p6 and p7 are for example set to: 1599.0406494140625, 2713.392578125, 44.4309.  
	---  
	---p8 is an int, often random set to for example: MISC::GET_RANDOM_INT_IN_RANGE(5000, 10000).  
	ADD_PATROL_ROUTE_NODE = function(nodeId, nodeType, posX, posY, posZ, headingX, headingY, headingZ, duration) invoker.call(0x8EDF950167586B7C, nodeId, nodeType, posX, posY, posZ, headingX, headingY, headingZ, duration) end,
	---  
	ADD_PATROL_ROUTE_LINK = function(nodeId1, nodeId2) invoker.call(0x23083260DEC3A551, nodeId1, nodeId2) end,
	---  
	CREATE_PATROL_ROUTE = function() invoker.call(0xAF8A443CCC8018DC) end,
	---From the b617d scripts:  
	---  
	---TASK::DELETE_PATROL_ROUTE("miss_merc0");  
	---TASK::DELETE_PATROL_ROUTE("miss_merc1");  
	---TASK::DELETE_PATROL_ROUTE("miss_merc2");  
	---TASK::DELETE_PATROL_ROUTE("miss_dock");  
	DELETE_PATROL_ROUTE = function(patrolRoute) invoker.call(0x7767DD9D65E91319, patrolRoute) end,
	---  
	GET_PATROL_TASK_INFO = function(ped, timeLeftAtNode, nodeId) return invoker.call(0x52F734CEBE20DFBA, ped, timeLeftAtNode, nodeId).bool end,
	---After looking at some scripts the second parameter seems to be an id of some kind. Here are some I found from some R* scripts:  
	---  
	---"miss_Tower_01" (this went from 01 - 10)  
	---"miss_Ass0" (0, 4, 6, 3)  
	---"MISS_PATROL_8"  
	---  
	---I think they're patrol routes, but I'm not sure. And I believe the 3rd parameter is a BOOL, but I can't confirm other than only seeing 0 and 1 being passed.  
	---  
	---  
	---As far as I can see the patrol routes names such as "miss_Ass0" have been defined earlier in the scripts. This leads me to believe we can defined our own new patrol routes by following the same approach.   
	---From the scripts  
	---  
	---    TASK::OPEN_PATROL_ROUTE("miss_Ass0");  
	---    TASK::ADD_PATROL_ROUTE_NODE(0, "WORLD_HUMAN_GUARD_STAND", l_738[0/*3*/], -139.4076690673828, -993.4732055664062, 26.2754, MISC::GET_RANDOM_INT_IN_RANGE(5000, 10000));  
	---    TASK::ADD_PATROL_ROUTE_NODE(1, "WORLD_HUMAN_GUARD_STAND", l_738[1/*3*/], -116.1391830444336, -987.4984130859375, 26.38541030883789, MISC::GET_RANDOM_INT_IN_RANGE(5000, 10000));  
	---    TASK::ADD_PATROL_ROUTE_NODE(2, "WORLD_HUMAN_GUARD_STAND", l_738[2/*3*/], -128.46847534179688, -979.0340576171875, 26.2754, MISC::GET_RANDOM_INT_IN_RANGE(5000, 10000));  
	---    TASK::ADD_PATROL_ROUTE_LINK(0, 1);  
	---    TASK::ADD_PATROL_ROUTE_LINK(1, 2);  
	---    TASK::ADD_PATROL_ROUTE_LINK(2, 0);  
	---    TASK::CLOSE_PATROL_ROUTE();  
	---    TASK::CREATE_PATROL_ROUTE();  
	---  
	---  
	TASK_PATROL = function(ped, patrolRouteName, alertState, canChatToPeds, useHeadLookAt) invoker.call(0xBDA5DF49D080FE4E, ped, patrolRouteName, alertState, canChatToPeds, useHeadLookAt) end,
	---Makes the ped run to take cover  
	TASK_STAY_IN_COVER = function(ped) invoker.call(0xE5DA8615A6180789, ped) end,
	---x, y, z: offset in world coords from some entity.  
	ADD_VEHICLE_SUBTASK_ATTACK_COORD = function(ped, x, y, z) invoker.call(0x5CF0D8F9BBA0DD75, ped, x, y, z) end,
	---  
	ADD_VEHICLE_SUBTASK_ATTACK_PED = function(ped, target) invoker.call(0x85F462BADC7DA47F, ped, target) end,
	---  
	TASK_VEHICLE_SHOOT_AT_PED = function(ped, target, fireTolerance) invoker.call(0x10AB107B887214D8, ped, target, fireTolerance) end,
	---  
	TASK_VEHICLE_AIM_AT_PED = function(ped, target) invoker.call(0xE41885592B08B097, ped, target) end,
	---  
	TASK_VEHICLE_SHOOT_AT_COORD = function(ped, x, y, z, fireTolerance) invoker.call(0x5190796ED39C9B6D, ped, x, y, z, fireTolerance) end,
	---  
	TASK_VEHICLE_AIM_AT_COORD = function(ped, x, y, z) invoker.call(0x447C1E9EF844BC0F, ped, x, y, z) end,
	---Differs from TASK_VEHICLE_DRIVE_TO_COORDS in that it will pick the shortest possible road route without taking one-way streets and other "road laws" into consideration.  
	---  
	---WARNING:  
	---A behaviorFlag value of 0 will result in a clunky, stupid driver!  
	---  
	---Recommended settings:  
	---speed = 30.0f,  
	---behaviorFlag = 156,   
	---stoppingRange = 5.0f;  
	---  
	---If you simply want to have your driver move to a fixed location, call it only once, or, when necessary in the event of interruption.   
	---  
	---If using this to continually follow a Ped who is on foot:  You will need to run this in a tick loop.  Call it in with the Ped's updated coordinates every 20 ticks or so and you will have one hell of a smart, fast-reacting NPC driver -- provided he doesn't get stuck.  If your update frequency is too fast, the Ped may not have enough time to figure his way out of being stuck, and thus, remain stuck.  One way around this would be to implement an "anti-stuck" mechanism, which allows the driver to realize he's stuck, temporarily pause the tick, unstuck, then resume the tick.  
	---  
	---EDIT:  This is being discussed in more detail at http://gtaforums.com/topic/818504-any-idea-on-how-to-make-peds-clever-and-insanely-fast-c/    
	TASK_VEHICLE_GOTO_NAVMESH = function(ped, vehicle, x, y, z, speed, behaviorFlag, stoppingRange) invoker.call(0x195AEEB13CEFE2EE, ped, vehicle, x, y, z, speed, behaviorFlag, stoppingRange) end,
	---movement_speed: mostly 2f, but also 1/1.2f, etc.  
	---p8: always false  
	---p9: 2f  
	---p10: 0.5f  
	---p11: true  
	---p12: 0 / 512 / 513, etc.  
	---p13: 0  
	---firing_pattern: ${firing_pattern_full_auto}, 0xC6EE6B4C  
	TASK_GO_TO_COORD_WHILE_AIMING_AT_COORD = function(ped, x, y, z, aimAtX, aimAtY, aimAtZ, moveBlendRatio, shoot, targetRadius, slowDistance, useNavMesh, navFlags, instantBlendToAim, firingPattern) invoker.call(0x11315AB3385B8AC0, ped, x, y, z, aimAtX, aimAtY, aimAtZ, moveBlendRatio, shoot, targetRadius, slowDistance, useNavMesh, navFlags, instantBlendToAim, firingPattern) end,
	---  
	TASK_GO_TO_COORD_WHILE_AIMING_AT_ENTITY = function(ped, x, y, z, aimAtID, moveBlendRatio, shoot, targetRadius, slowDistance, useNavMesh, navFlags, instantBlendToAim, firingPattern, time) invoker.call(0xB2A16444EAD9AE47, ped, x, y, z, aimAtID, moveBlendRatio, shoot, targetRadius, slowDistance, useNavMesh, navFlags, instantBlendToAim, firingPattern, time) end,
	---The ped will walk or run towards goToLocation, aiming towards goToLocation or focusLocation (depending on the aimingFlag) and shooting if shootAtEnemies = true to any enemy in his path.  
	---  
	---If the ped is closer than noRoadsDistance, the ped will ignore pathing/navmesh and go towards goToLocation directly. This could cause the ped to get stuck behind tall walls if the goToLocation is on the other side. To avoid this, use 0.0f and the ped will always use pathing/navmesh to reach his destination.  
	---  
	---If the speed is set to 0.0f, the ped will just stand there while aiming, if set to 1.0f he will walk while aiming, 2.0f will run while aiming.  
	---  
	---The ped will stop aiming when he is closer than distanceToStopAt to goToLocation.  
	---  
	---I still can't figure out what unkTrue is used for. I don't notice any difference if I set it to false but in the decompiled scripts is always true.  
	---  
	---I think that unkFlag, like the driving styles, could be a flag that "work as a list of 32 bits converted to a decimal integer. Each bit acts as a flag, and enables or disables a function". What leads me to this conclusion is the fact that in the decompiled scripts, unkFlag takes values like: 0, 1, 5 (101 in binary) and 4097 (4096 + 1 or 1000000000001 in binary). For now, I don't know what behavior enable or disable this possible flag so I leave it at 0.  
	---  
	---Note: After some testing, using unkFlag = 16 (0x10) enables the use of sidewalks while moving towards goToLocation.  
	---  
	---The aimingFlag takes 2 values: 0 to aim at the focusLocation, 1 to aim at where the ped is heading (goToLocation).  
	---  
	---Example:  
	---  
	---enum AimFlag  
	---{  
	---   AimAtFocusLocation,  
	---   AimAtGoToLocation  
	---};  
	---  
	---Vector3 goToLocation1 = { 996.2867f, 0, -2143.044f, 0, 28.4763f, 0 }; // remember the padding.  
	---  
	---Vector3 goToLocation2 = { 990.2867f, 0, -2140.044f, 0, 28.4763f, 0 }; // remember the padding.  
	---  
	---Vector3 focusLocation = { 994.3478f, 0, -2136.118f, 0, 29.2463f, 0 }; // the coord z should be a little higher, around +1.0f to avoid aiming at the ground  
	---  
	---// 1st example  
	---TASK::TASK_GO_TO_COORD_AND_AIM_AT_HATED_ENTITIES_NEAR_COORD(pedHandle, goToLocation1.x, goToLocation1.y, goToLocation1.z, focusLocation.x, focusLocation.y, focusLocation.z, 2.0f /*run*/, true /*shoot*/, 3.0f /*stop at*/, 0.0f /*noRoadsDistance*/, true /*always true*/, 0 /*possible flag*/, AimFlag::AimAtGoToLocation, -957453492 /*FullAuto pattern*/);  
	---  
	---// 2nd example  
	---TASK::TASK_GO_TO_COORD_AND_AIM_AT_HATED_ENTITIES_NEAR_COORD(pedHandle, goToLocation2.x, goToLocation2.y, goToLocation2.z, focusLocation.x, focusLocation.y, focusLocation.z, 1.0f /*walk*/, false /*don't shoot*/, 3.0f /*stop at*/, 0.0f /*noRoadsDistance*/, true /*always true*/, 0 /*possible flag*/, AimFlag::AimAtFocusLocation, -957453492 /*FullAuto pattern*/);  
	---  
	---  
	---1st example: The ped (pedhandle) will run towards goToLocation1. While running and aiming towards goToLocation1, the ped will shoot on sight to any enemy in his path, using "FullAuto" firing pattern. The ped will stop once he is closer than distanceToStopAt to goToLocation1.  
	---  
	---2nd example: The ped will walk towards goToLocation2. This time, while walking towards goToLocation2 and aiming at focusLocation, the ped will point his weapon on sight to any enemy in his path without shooting. The ped will stop once he is closer than distanceToStopAt to goToLocation2.  
	TASK_GO_TO_COORD_AND_AIM_AT_HATED_ENTITIES_NEAR_COORD = function(pedHandle, goToLocationX, goToLocationY, goToLocationZ, focusLocationX, focusLocationY, focusLocationZ, speed, shootAtEnemies, distanceToStopAt, noRoadsDistance, useNavMesh, navFlags, taskFlags, firingPattern) invoker.call(0xA55547801EB331FC, pedHandle, goToLocationX, goToLocationY, goToLocationZ, focusLocationX, focusLocationY, focusLocationZ, speed, shootAtEnemies, distanceToStopAt, noRoadsDistance, useNavMesh, navFlags, taskFlags, firingPattern) end,
	---  
	TASK_GO_TO_ENTITY_WHILE_AIMING_AT_COORD = function(ped, entity, aimX, aimY, aimZ, moveBlendRatio, shoot, targetRadius, slowDistance, useNavMesh, instantBlendToAim, firingPattern) invoker.call(0x04701832B739DCE5, ped, entity, aimX, aimY, aimZ, moveBlendRatio, shoot, targetRadius, slowDistance, useNavMesh, instantBlendToAim, firingPattern) end,
	---shootatEntity:  
	---If true, peds will shoot at Entity till it is dead.  
	---If false, peds will just walk till they reach the entity and will cease shooting.  
	TASK_GO_TO_ENTITY_WHILE_AIMING_AT_ENTITY = function(ped, entityToWalkTo, entityToAimAt, speed, shootatEntity, targetRadius, slowDistance, useNavMesh, instantBlendToAim, firingPattern) invoker.call(0x97465886D35210E9, ped, entityToWalkTo, entityToAimAt, speed, shootatEntity, targetRadius, slowDistance, useNavMesh, instantBlendToAim, firingPattern) end,
	---Makes the ped ragdoll like when falling from a great height  
	SET_HIGH_FALL_TASK = function(ped, minTime, maxTime, entryType) invoker.call(0x8C825BDC7741D37C, ped, minTime, maxTime, entryType) end,
	---Full list of waypoint recordings by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/waypointRecordings.json  
	---For a full list of the points, see here: goo.gl/wIH0vn  
	---  
	---Max number of loaded recordings is 32.  
	REQUEST_WAYPOINT_RECORDING = function(name) invoker.call(0x9EEFB62EB27B5792, name) end,
	---Full list of waypoint recordings by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/waypointRecordings.json  
	GET_IS_WAYPOINT_RECORDING_LOADED = function(name) return invoker.call(0xCB4E8BE8A0063C5D, name).bool end,
	---Full list of waypoint recordings by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/waypointRecordings.json  
	REMOVE_WAYPOINT_RECORDING = function(name) invoker.call(0xFF1B8B4AA1C25DC8, name) end,
	---Full list of waypoint recordings by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/waypointRecordings.json  
	---For a full list of the points, see here: goo.gl/wIH0vn  
	WAYPOINT_RECORDING_GET_NUM_POINTS = function(name, points) return invoker.call(0x5343532C01A07234, name, points).bool end,
	---Full list of waypoint recordings by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/waypointRecordings.json  
	---For a full list of the points, see here: goo.gl/wIH0vn  
	WAYPOINT_RECORDING_GET_COORD = function(name, point, coord) return invoker.call(0x2FB897405C90B361, name, point, coord).bool end,
	---Full list of waypoint recordings by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/waypointRecordings.json  
	WAYPOINT_RECORDING_GET_SPEED_AT_POINT = function(name, point) return invoker.call(0x005622AEBC33ACA9, name, point).float end,
	---Full list of waypoint recordings by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/waypointRecordings.json  
	---For a full list of the points, see here: goo.gl/wIH0vn  
	WAYPOINT_RECORDING_GET_CLOSEST_WAYPOINT = function(name, x, y, z, point) return invoker.call(0xB629A298081F876F, name, x, y, z, point).bool end,
	---  
	TASK_FOLLOW_WAYPOINT_RECORDING = function(ped, name, p2, p3, p4) invoker.call(0x0759591819534F7B, ped, name, p2, p3, p4) end,
	---  
	IS_WAYPOINT_PLAYBACK_GOING_ON_FOR_PED = function(ped) return invoker.call(0xE03B3F2D3DC59B64, ped).bool end,
	---  
	GET_PED_WAYPOINT_PROGRESS = function(ped) return invoker.call(0x2720AAA75001E094, ped).int end,
	---  
	SET_PED_WAYPOINT_PROGRESS = function(ped, progress) invoker.call(0x686ECCD99D4E61BB, ped, progress) end,
	---  
	GET_PED_WAYPOINT_DISTANCE = function(p0) return invoker.call(0xE6A877C64CAF1BC5, p0).float end,
	---  
	SET_PED_WAYPOINT_ROUTE_OFFSET = function(ped, x, y, z) return invoker.call(0xED98E10B0AFCE4B4, ped, x, y, z).bool end,
	---  
	GET_WAYPOINT_DISTANCE_ALONG_ROUTE = function(name, point) return invoker.call(0xA5B769058763E497, name, point).float end,
	---  
	WAYPOINT_PLAYBACK_GET_IS_PAUSED = function(p0) return invoker.call(0x701375A7D43F01CB, p0).bool end,
	---  
	WAYPOINT_PLAYBACK_PAUSE = function(p0, p1, p2) invoker.call(0x0F342546AA06FED5, p0, p1, p2) end,
	---  
	WAYPOINT_PLAYBACK_RESUME = function(p0, p1, p2, p3) invoker.call(0x244F70C84C547D2D, p0, p1, p2, p3) end,
	---  
	WAYPOINT_PLAYBACK_OVERRIDE_SPEED = function(p0, p1, p2) invoker.call(0x7D7D2B47FA788E85, p0, p1, p2) end,
	---  
	WAYPOINT_PLAYBACK_USE_DEFAULT_SPEED = function(p0) invoker.call(0x6599D834B12D0800, p0) end,
	---  
	USE_WAYPOINT_RECORDING_AS_ASSISTED_MOVEMENT_ROUTE = function(name, p1, p2, p3) invoker.call(0x5A353B8E6B1095B5, name, p1, p2, p3) end,
	---  
	WAYPOINT_PLAYBACK_START_AIMING_AT_PED = function(ped, target, p2) invoker.call(0x20E330937C399D29, ped, target, p2) end,
	---  
	WAYPOINT_PLAYBACK_START_AIMING_AT_COORD = function(ped, x, y, z, p4) invoker.call(0x8968400D900ED8B3, ped, x, y, z, p4) end,
	---  
	WAYPOINT_PLAYBACK_START_SHOOTING_AT_PED = function(ped, ped2, p2, p3) invoker.call(0xE70BA7B90F8390DC, ped, ped2, p2, p3) end,
	---  
	WAYPOINT_PLAYBACK_START_SHOOTING_AT_COORD = function(ped, x, y, z, p4, firingPattern) invoker.call(0x057A25CFCC9DB671, ped, x, y, z, p4, firingPattern) end,
	---  
	WAYPOINT_PLAYBACK_STOP_AIMING_OR_SHOOTING = function(ped) invoker.call(0x47EFA040EBB8E2EA, ped) end,
	---Routes: "1_FIBStairs", "2_FIBStairs", "3_FIBStairs", "4_FIBStairs", "5_FIBStairs", "5_TowardsFire", "6a_FIBStairs", "7_FIBStairs", "8_FIBStairs", "Aprtmnt_1", "AssAfterLift", "ATM_1", "coroner2", "coroner_stairs", "f5_jimmy1", "fame1", "family5b", "family5c", "Family5d", "family5d", "FIB_Glass1", "FIB_Glass2", "FIB_Glass3", "finaBroute1A", "finalb1st", "finalB1sta", "finalbround", "finalbroute2", "Hairdresser1", "jan_foyet_ft_door", "Jo_3", "Lemar1", "Lemar2", "mansion_1", "Mansion_1", "pols_1", "pols_2", "pols_3", "pols_4", "pols_5", "pols_6", "pols_7", "pols_8", "Pro_S1", "Pro_S1a", "Pro_S2", "Towards_case", "trev_steps", "tunrs1", "tunrs2", "tunrs3", "Wave01457s"  
	ASSISTED_MOVEMENT_REQUEST_ROUTE = function(route) invoker.call(0x817268968605947A, route) end,
	---  
	ASSISTED_MOVEMENT_REMOVE_ROUTE = function(route) invoker.call(0x3548536485DD792B, route) end,
	---  
	ASSISTED_MOVEMENT_IS_ROUTE_LOADED = function(route) return invoker.call(0x60F9A4393A21F741, route).bool end,
	---  
	ASSISTED_MOVEMENT_SET_ROUTE_PROPERTIES = function(route, props) invoker.call(0xD5002D78B7162E1B, route, props) end,
	---  
	ASSISTED_MOVEMENT_OVERRIDE_LOAD_DISTANCE_THIS_FRAME = function(dist) invoker.call(0x13945951E16EF912, dist) end,
	---  
	---  
	---p2 = Waypoint recording string (found in update\update.rpf\x64\levels\gta5\waypointrec.rpf  
	---p3 = 786468  
	---p4 = 0  
	---p5 = 16  
	---p6 = -1 (angle?)  
	---p7/8/9 = usually v3.zero  
	---p10 = bool (repeat?)  
	---p11 = 1073741824  
	---  
	---Full list of waypoint recordings by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/waypointRecordings.json  
	TASK_VEHICLE_FOLLOW_WAYPOINT_RECORDING = function(ped, vehicle, WPRecording, p3, p4, p5, p6, p7, p8, p9) invoker.call(0x3123FAA6DB1CF7ED, ped, vehicle, WPRecording, p3, p4, p5, p6, p7, p8, p9) end,
	---  
	IS_WAYPOINT_PLAYBACK_GOING_ON_FOR_VEHICLE = function(vehicle) return invoker.call(0xF5134943EA29868C, vehicle).bool end,
	---  
	GET_VEHICLE_WAYPOINT_PROGRESS = function(vehicle) return invoker.call(0x9824CFF8FC66E159, vehicle).int end,
	---  
	GET_VEHICLE_WAYPOINT_TARGET_POINT = function(vehicle) return invoker.call(0x416B62AC8B9E5BBD, vehicle).int end,
	---  
	VEHICLE_WAYPOINT_PLAYBACK_PAUSE = function(vehicle) invoker.call(0x8A4E6AC373666BC5, vehicle) end,
	---  
	VEHICLE_WAYPOINT_PLAYBACK_GET_IS_PAUSED = function(vehicle) return invoker.call(0xE435D3539EFDCD1B, vehicle).bool end,
	---  
	VEHICLE_WAYPOINT_PLAYBACK_RESUME = function(vehicle) invoker.call(0xDC04FCAA7839D492, vehicle) end,
	---  
	VEHICLE_WAYPOINT_PLAYBACK_USE_DEFAULT_SPEED = function(vehicle) invoker.call(0x5CEB25A7D2848963, vehicle) end,
	---  
	VEHICLE_WAYPOINT_PLAYBACK_OVERRIDE_SPEED = function(vehicle, speed) invoker.call(0x121F0593E0A431D7, vehicle, speed) end,
	---I cant believe I have to define this, this is one of the best natives.  
	---  
	---It makes the ped ignore basically all shocking events around it. Occasionally the ped may comment or gesture, but other than that they just continue their daily activities. This includes shooting and wounding the ped. And - most importantly - they do not flee.  
	---  
	---Since it is a task, every time the native is called the ped will stop for a moment.   
	TASK_SET_BLOCKING_OF_NON_TEMPORARY_EVENTS = function(ped, toggle) invoker.call(0x90D2156198831D69, ped, toggle) end,
	---p2 always false  
	---  
	---[30/03/2017] ins1de :  
	---  
	---See FORCE_PED_MOTION_STATE  
	TASK_FORCE_MOTION_STATE = function(ped, state, forceRestart) invoker.call(0x4F056E1AFFEF17AB, ped, state, forceRestart) end,
	---Example:  
	---TASK::TASK_MOVE_NETWORK_BY_NAME(PLAYER::PLAYER_PED_ID(), "arm_wrestling_sweep_paired_a_rev3", 0.0f, true, "mini@arm_wrestling", 0);  
	TASK_MOVE_NETWORK_BY_NAME = function(ped, task, multiplier, allowOverrideCloneUpdate, animDict, flags) invoker.call(0x2D537BA194896636, ped, task, multiplier, allowOverrideCloneUpdate, animDict, flags) end,
	---Example:  
	---TASK::TASK_MOVE_NETWORK_ADVANCED_BY_NAME(PLAYER::PLAYER_PED_ID(), "minigame_tattoo_michael_parts", 324.13f, 181.29f, 102.6f, 0.0f, 0.0f, 22.32f, 2, 0, false, 0, 0);  
	TASK_MOVE_NETWORK_ADVANCED_BY_NAME = function(ped, network, x, y, z, rotX, rotY, rotZ, rotOrder, blendDuration, allowOverrideCloneUpdate, animDict, flags) invoker.call(0xD5B35BEA41919ACB, ped, network, x, y, z, rotX, rotY, rotZ, rotOrder, blendDuration, allowOverrideCloneUpdate, animDict, flags) end,
	---Used only once in the scripts (am_mp_nightclub)  
	TASK_MOVE_NETWORK_BY_NAME_WITH_INIT_PARAMS = function(ped, network, initialParameters, blendDuration, allowOverrideCloneUpdate, animDict, flags) invoker.call(0x3D45B0B355C5E0C9, ped, network, initialParameters, blendDuration, allowOverrideCloneUpdate, animDict, flags) end,
	---  
	TASK_MOVE_NETWORK_ADVANCED_BY_NAME_WITH_INIT_PARAMS = function(ped, network, initialParameters, x, y, z, rotX, rotY, rotZ, rotOrder, blendDuration, allowOverrideCloneUpdate, dictionary, flags) invoker.call(0x29682E2CCF21E9B5, ped, network, initialParameters, x, y, z, rotX, rotY, rotZ, rotOrder, blendDuration, allowOverrideCloneUpdate, dictionary, flags) end,
	---  
	IS_TASK_MOVE_NETWORK_ACTIVE = function(ped) return invoker.call(0x921CE12C489C4C41, ped).bool end,
	---  
	IS_TASK_MOVE_NETWORK_READY_FOR_TRANSITION = function(ped) return invoker.call(0x30ED88D5E0C56A37, ped).bool end,
	---  
	REQUEST_TASK_MOVE_NETWORK_STATE_TRANSITION = function(ped, name) return invoker.call(0xD01015C7316AE176, ped, name).bool end,
	---Used only once in the scripts (fm_mission_controller) like so:  
	---  
	---TASK::SET_EXPECTED_CLONE_NEXT_TASK_MOVE_NETWORK_STATE(iLocal_3160, "Cutting");  
	SET_EXPECTED_CLONE_NEXT_TASK_MOVE_NETWORK_STATE = function(ped, state) return invoker.call(0xAB13A5565480B6D9, ped, state).bool end,
	---  
	GET_TASK_MOVE_NETWORK_STATE = function(ped) return invoker.call(0x717E4D1F2048376D, ped).str end,
	---  
	SET_TASK_MOVE_NETWORK_ANIM_SET = function(ped, clipSet, variableClipSet) invoker.call(0x8423541E8B3A1589, ped, clipSet, variableClipSet) end,
	---signalName - "Phase", "Wobble", "x_axis","y_axis","introphase","speed".  
	---p2 - From what i can see it goes up to 1f (maybe).  
	---  
	---Example: TASK::SET_TASK_MOVE_NETWORK_SIGNAL_FLOAT(PLAYER::PLAYER_PED_ID(), "Phase", 0.5);  
	SET_TASK_MOVE_NETWORK_SIGNAL_FLOAT = function(ped, signalName, value) invoker.call(0xD5BB4025AE449A4E, ped, signalName, value) end,
	---  
	SET_TASK_MOVE_NETWORK_SIGNAL_LOCAL_FLOAT = function(ped, signalName, value) invoker.call(0x373EF409B82697A3, ped, signalName, value) end,
	---  
	SET_TASK_MOVE_NETWORK_SIGNAL_FLOAT_LERP_RATE = function(ped, signalName, value) invoker.call(0x8634CEF2522D987B, ped, signalName, value) end,
	---  
	SET_TASK_MOVE_NETWORK_SIGNAL_BOOL = function(ped, signalName, value) invoker.call(0xB0A6CFD2C69C1088, ped, signalName, value) end,
	---  
	GET_TASK_MOVE_NETWORK_SIGNAL_FLOAT = function(ped, signalName) return invoker.call(0x44AB0B3AFECCE242, ped, signalName).float end,
	---  
	GET_TASK_MOVE_NETWORK_SIGNAL_BOOL = function(ped, signalName) return invoker.call(0xA7FFBA498E4AAF67, ped, signalName).bool end,
	---  
	GET_TASK_MOVE_NETWORK_EVENT = function(ped, eventName) return invoker.call(0xB4F47213DF45A64C, ped, eventName).bool end,
	---Doesn't actually return anything.  
	SET_TASK_MOVE_NETWORK_ENABLE_COLLISION_ON_NETWORK_CLONE_WHEN_FIXED = function(ped, enable) return invoker.call(0x0FFB3C758E8C07B9, ped, enable).bool end,
	---  
	_SET_SCRIPT_TASK_ENABLE_COLLISION_ON_NETWORK_CLONE_WHEN_FIXED = function(ped, enable) invoker.call(0x32F6EEF031F943DC, ped, enable) end,
	---  
	_SET_AMBIENT_PED_ENABLE_COLLISION_ON_NETWORK_CLONE_WHEN_FIXED = function(ped, enable) invoker.call(0x0EFE4834A2F40563, ped, enable) end,
	---  
	IS_MOVE_BLEND_RATIO_STILL = function(ped) return invoker.call(0x349CE7B56DAFD95C, ped).bool end,
	---  
	IS_MOVE_BLEND_RATIO_WALKING = function(ped) return invoker.call(0xF133BBBE91E1691F, ped).bool end,
	---  
	IS_MOVE_BLEND_RATIO_RUNNING = function(ped) return invoker.call(0xD4D8636C0199A939, ped).bool end,
	---  
	IS_MOVE_BLEND_RATIO_SPRINTING = function(ped) return invoker.call(0x24A2AD74FA9814E2, ped).bool end,
	---  
	IS_PED_STILL = function(ped) return invoker.call(0xAC29253EEF8F0180, ped).bool end,
	---  
	IS_PED_WALKING = function(ped) return invoker.call(0xDE4C184B2B9B071A, ped).bool end,
	---  
	IS_PED_RUNNING = function(ped) return invoker.call(0xC5286FFC176F28A2, ped).bool end,
	---  
	IS_PED_SPRINTING = function(ped) return invoker.call(0x57E457CD2C0FC168, ped).bool end,
	---  
	IS_PED_STRAFING = function(ped) return invoker.call(0xE45B7F222DE47E09, ped).bool end,
	--- TASK::TASK_SYNCHRONIZED_SCENE(ped, scene, "creatures@rottweiler@in_vehicle@std_car", "get_in", 1000.0, -8.0, 4, 0, 0x447a0000, 0);  
	---  
	---Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json  
	TASK_SYNCHRONIZED_SCENE = function(ped, scene, animDictionary, animationName, blendIn, blendOut, flags, ragdollBlockingFlags, moverBlendDelta, ikFlags) invoker.call(0xEEA929141F699854, ped, scene, animDictionary, animationName, blendIn, blendOut, flags, ragdollBlockingFlags, moverBlendDelta, ikFlags) end,
	---  
	TASK_AGITATED_ACTION_CONFRONT_RESPONSE = function(ped, ped2) invoker.call(0x19D1B791CB3670FE, ped, ped2) end,
	---This function is called on peds in vehicles.  
	---  
	---anim: animation name  
	---p2, p3, p4: "sweep_low", "sweep_med" or "sweep_high"  
	---p5: no idea what it does but is usually -1  
	TASK_SWEEP_AIM_ENTITY = function(ped, animDict, lowAnimName, medAnimName, hiAnimName, runtime, targetEntity, turnRate, blendInDuration) invoker.call(0x2047C02158D6405A, ped, animDict, lowAnimName, medAnimName, hiAnimName, runtime, targetEntity, turnRate, blendInDuration) end,
	---  
	UPDATE_TASK_SWEEP_AIM_ENTITY = function(ped, entity) invoker.call(0xE4973DBDBE6E44B3, ped, entity) end,
	---  
	TASK_SWEEP_AIM_POSITION = function(ped, animDict, lowAnimName, medAnimName, hiAnimName, runtime, x, y, z, turnRate, blendInDuration) invoker.call(0x7AFE8FDC10BC07D2, ped, animDict, lowAnimName, medAnimName, hiAnimName, runtime, x, y, z, turnRate, blendInDuration) end,
	---  
	UPDATE_TASK_SWEEP_AIM_POSITION = function(ped, x, y, z) invoker.call(0xBB106883F5201FC4, ped, x, y, z) end,
	---Example from "me_amanda1.ysc.c4":  
	---TASK::TASK_ARREST_PED(l_19F /* This is a Ped */ , PLAYER::PLAYER_PED_ID());  
	---  
	---Example from "armenian1.ysc.c4":  
	---if (!PED::IS_PED_INJURED(l_B18[0/*1*/])) {  
	---    TASK::TASK_ARREST_PED(l_B18[0/*1*/], PLAYER::PLAYER_PED_ID());  
	---}  
	---  
	---I would love to have time to experiment to see if a player Ped can arrest another Ped. Might make for a good cop mod.  
	---  
	---  
	---Looks like only the player can be arrested this way. Peds react and try to arrest you if you task them, but the player charater doesn't do anything if tasked to arrest another ped.  
	TASK_ARREST_PED = function(ped, target) invoker.call(0xF3B9A78A178572B1, ped, target) end,
	---  
	IS_PED_RUNNING_ARREST_TASK = function(ped) return invoker.call(0x3DC52677769B4AE0, ped).bool end,
	---This function is hard-coded to always return 0.  
	IS_PED_BEING_ARRESTED = function(ped) return invoker.call(0x90A09F3A45FED688, ped).bool end,
	---  
	UNCUFF_PED = function(ped) invoker.call(0x67406F2C8F87FC4F, ped) end,
	---  
	IS_PED_CUFFED = function(ped) return invoker.call(0x74E559B3BC910685, ped).bool end,
}
VEHICLE={
	---p7 when set to true allows you to spawn vehicles under -100 z.  
	---Full list of vehicles by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/vehicles.json  
	CREATE_VEHICLE = function(modelHash, x, y, z, heading, isNetwork, bScriptHostVeh, p7) return invoker.call(0xAF35D0D2583051B0, modelHash, x, y, z, heading, isNetwork, bScriptHostVeh, p7).int end,
	---Deletes a vehicle.  
	---The vehicle must be a mission entity to delete, so call this before deleting: SET_ENTITY_AS_MISSION_ENTITY(vehicle, true, true);  
	---  
	---eg how to use:  
	---SET_ENTITY_AS_MISSION_ENTITY(vehicle, true, true);  
	---DELETE_VEHICLE(&vehicle);  
	---  
	---Deletes the specified vehicle, then sets the handle pointed to by the pointer to NULL.  
	DELETE_VEHICLE = function(vehicle) invoker.call(0xEA386986E786A54F, vehicle) end,
	---  
	SET_VEHICLE_ALLOW_HOMING_MISSLE_LOCKON = function(vehicle, toggle, p2) invoker.call(0x7D6F9A3EF26136A0, vehicle, toggle, p2) end,
	---  
	SET_VEHICLE_ALLOW_HOMING_MISSLE_LOCKON_SYNCED = function(vehicle, canBeLockedOn, p2) invoker.call(0x1DDA078D12879EEE, vehicle, canBeLockedOn, p2) end,
	---Makes the vehicle accept no passengers.  
	SET_VEHICLE_ALLOW_NO_PASSENGERS_LOCKON = function(veh, toggle) invoker.call(0x5D14D4154BFE7B2C, veh, toggle) end,
	---Returns a value depending on the lock-on state of vehicle weapons.  
	---0: not locked on  
	---1: locking on  
	---2: locked on  
	GET_VEHICLE_HOMING_LOCKON_STATE = function(vehicle) return invoker.call(0xE6B0E8CFC3633BF0, vehicle).int end,
	---  
	GET_VEHICLE_HOMING_LOCKEDONTO_STATE = function(p0) return invoker.call(0x6EAAEFC76ACC311F, p0).int end,
	---  
	SET_VEHICLE_HOMING_LOCKEDONTO_STATE = function(p0, p1) invoker.call(0x407DC5E97DB1A4D3, p0, p1) end,
	---  
	IS_VEHICLE_MODEL = function(vehicle, model) return invoker.call(0x423E8DE37D934D89, vehicle, model).bool end,
	---  
	DOES_SCRIPT_VEHICLE_GENERATOR_EXIST = function(vehicleGenerator) return invoker.call(0xF6086BC836400876, vehicleGenerator).bool end,
	---Creates a script vehicle generator at the given coordinates. Most parameters after the model hash are unknown.  
	---  
	---Parameters:  
	---x/y/z - Generator position  
	---heading - Generator heading  
	---p4 - Unknown (always 5.0)  
	---p5 - Unknown (always 3.0)  
	---modelHash - Vehicle model hash  
	---p7/8/9/10 - Unknown (always -1)  
	---p11 - Unknown (usually TRUE, only one instance of FALSE)  
	---p12/13 - Unknown (always FALSE)  
	---p14 - Unknown (usally FALSE, only two instances of TRUE)  
	---p15 - Unknown (always TRUE)  
	---p16 - Unknown (always -1)  
	---  
	---Vector3 coords = GET_ENTITY_COORDS(PLAYER_PED_ID(), 0);    CREATE_SCRIPT_VEHICLE_GENERATOR(coords.x, coords.y, coords.z, 1.0f, 5.0f, 3.0f, GET_HASH_KEY("adder"), -1. -1, -1, -1, -1, true, false, false, false, true, -1);  
	CREATE_SCRIPT_VEHICLE_GENERATOR = function(x, y, z, heading, p4, p5, modelHash, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16) return invoker.call(0x9DEF883114668116, x, y, z, heading, p4, p5, modelHash, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16).int end,
	---  
	DELETE_SCRIPT_VEHICLE_GENERATOR = function(vehicleGenerator) invoker.call(0x22102C9ABFCF125D, vehicleGenerator) end,
	---Only called once in the decompiled scripts. Presumably activates the specified generator.  
	SET_SCRIPT_VEHICLE_GENERATOR = function(vehicleGenerator, enabled) invoker.call(0xD9D620E0AC6DC4B0, vehicleGenerator, enabled) end,
	---When p6 is true, vehicle generators are active.  
	---p7 seems to always be true in story mode scripts, but it's sometimes false in online scripts.  
	SET_ALL_VEHICLE_GENERATORS_ACTIVE_IN_AREA = function(x1, y1, z1, x2, y2, z2, toggle, p7) invoker.call(0xC12321827687FE4D, x1, y1, z1, x2, y2, z2, toggle, p7) end,
	---  
	SET_ALL_VEHICLE_GENERATORS_ACTIVE = function() invoker.call(0x34AD89078831A4BC) end,
	---  
	SET_ALL_LOW_PRIORITY_VEHICLE_GENERATORS_ACTIVE = function(active) invoker.call(0x608207E7A8FB787C, active) end,
	---Related to car generators & CPlayerSwitchMgrLong  
	SET_VEHICLE_GENERATOR_AREA_OF_INTEREST = function(x, y, z, radius) invoker.call(0x9A75585FB2E54FAD, x, y, z, radius) end,
	---  
	CLEAR_VEHICLE_GENERATOR_AREA_OF_INTEREST = function() invoker.call(0x0A436B8643716D14) end,
	---Sets a vehicle on the ground on all wheels.  Returns whether or not the operation was successful.  
	---  
	---sfink: This has an additional param(Vehicle vehicle, float p1) which is always set to 5.0f in the b944 scripts.  
	SET_VEHICLE_ON_GROUND_PROPERLY = function(vehicle, p1) return invoker.call(0x49733E92263139D1, vehicle, p1).bool end,
	---  
	SET_VEHICLE_USE_CUTSCENE_WHEEL_COMPRESSION = function(p0, p1, p2, p3) return invoker.call(0xE023E8AC4EF7C117, p0, p1, p2, p3).bool end,
	---  
	IS_VEHICLE_STUCK_ON_ROOF = function(vehicle) return invoker.call(0xB497F06B288DCFDF, vehicle).bool end,
	---  
	ADD_VEHICLE_UPSIDEDOWN_CHECK = function(vehicle) invoker.call(0xB72E26D81006005B, vehicle) end,
	---  
	REMOVE_VEHICLE_UPSIDEDOWN_CHECK = function(vehicle) invoker.call(0xC53EB42A499A7E90, vehicle) end,
	---Returns true if the vehicle's current speed is less than, or equal to 0.0025f.  
	---  
	---For some vehicles it returns true if the current speed is <= 0.00039999999.  
	IS_VEHICLE_STOPPED = function(vehicle) return invoker.call(0x5721B434AD84D57A, vehicle).bool end,
	---Gets the number of passengers.  
	---  
	---This native was modified in b2545 to take two additional parameters, allowing you to include the driver or exclude dead passengers.  
	---  
	---To keep it working like before b2545, set includeDriver to false and includeDeadOccupants to true.  
	GET_VEHICLE_NUMBER_OF_PASSENGERS = function(vehicle, includeDriver, includeDeadOccupants) return invoker.call(0x24CB2137731FFE89, vehicle, includeDriver, includeDeadOccupants).int end,
	---  
	GET_VEHICLE_MAX_NUMBER_OF_PASSENGERS = function(vehicle) return invoker.call(0xA7C4F2C6E744A550, vehicle).int end,
	---Returns max number of passengers (including the driver) for the specified vehicle model.  
	---  
	---Full list of vehicles by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/vehicles.json  
	GET_VEHICLE_MODEL_NUMBER_OF_SEATS = function(modelHash) return invoker.call(0x2AD93716F184EDA4, modelHash).int end,
	---  
	IS_SEAT_WARP_ONLY = function(vehicle, seatIndex) return invoker.call(0xF7F203E31F96F6A1, vehicle, seatIndex).bool end,
	---  
	IS_TURRET_SEAT = function(vehicle, seatIndex) return invoker.call(0xE33FFA906CE74880, vehicle, seatIndex).bool end,
	---Returns true if the vehicle has the FLAG_ALLOWS_RAPPEL flag set.  
	DOES_VEHICLE_ALLOW_RAPPEL = function(vehicle) return invoker.call(0x4E417C547182C84D, vehicle).bool end,
	---Use this native inside a looped function.  
	---Values:  
	---- `0.0` = no vehicles on streets  
	---- `1.0` = normal vehicles on streets  
	SET_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME = function(multiplier) invoker.call(0x245A6883D966D537, multiplier) end,
	---  
	SET_RANDOM_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME = function(multiplier) invoker.call(0xB3B3359379FE77D3, multiplier) end,
	---  
	SET_PARKED_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME = function(multiplier) invoker.call(0xEAE6DCC7EEE3DB1D, multiplier) end,
	---  
	SET_DISABLE_RANDOM_TRAINS_THIS_FRAME = function(toggle) invoker.call(0xD4B8E3D1917BC86B, toggle) end,
	---  
	SET_AMBIENT_VEHICLE_RANGE_MULTIPLIER_THIS_FRAME = function(value) invoker.call(0x90B6DA738A9A25DA, value) end,
	---  
	SET_FAR_DRAW_VEHICLES = function(toggle) invoker.call(0x26324F33423F3CC3, toggle) end,
	---  
	SET_NUMBER_OF_PARKED_VEHICLES = function(value) invoker.call(0xCAA15F13EBD417FF, value) end,
	---enum eVehicleLockState  
	---{  
	---	VEHICLELOCK_NONE,  
	---	VEHICLELOCK_UNLOCKED,  
	---	VEHICLELOCK_LOCKED,  
	---	VEHICLELOCK_LOCKOUT_PLAYER_ONLY,  
	---	VEHICLELOCK_LOCKED_PLAYER_INSIDE,  
	---	VEHICLELOCK_LOCKED_INITIALLY,  
	---	VEHICLELOCK_FORCE_SHUT_DOORS,  
	---	VEHICLELOCK_LOCKED_BUT_CAN_BE_DAMAGED,  
	---	VEHICLELOCK_LOCKED_BUT_BOOT_UNLOCKED,  
	---	VEHICLELOCK_LOCKED_NO_PASSENGERS,  
	---	VEHICLELOCK_CANNOT_ENTER	  
	---};  
	SET_VEHICLE_DOORS_LOCKED = function(vehicle, doorLockStatus) invoker.call(0xB664292EAECF7FA6, vehicle, doorLockStatus) end,
	---doorId: see SET_VEHICLE_DOOR_SHUT  
	SET_VEHICLE_INDIVIDUAL_DOORS_LOCKED = function(vehicle, doorId, doorLockStatus) invoker.call(0xBE70724027F85BCD, vehicle, doorId, doorLockStatus) end,
	---If set to true, prevents vehicle sirens from having sound, leaving only the lights.  
	SET_VEHICLE_HAS_MUTED_SIRENS = function(vehicle, toggle) invoker.call(0xD8050E0EB60CF274, vehicle, toggle) end,
	---  
	SET_VEHICLE_DOORS_LOCKED_FOR_PLAYER = function(vehicle, player, toggle) invoker.call(0x517AAF684BB50CD1, vehicle, player, toggle) end,
	---  
	GET_VEHICLE_DOORS_LOCKED_FOR_PLAYER = function(vehicle, player) return invoker.call(0xF6AF6CB341349015, vehicle, player).bool end,
	---After some analysis, I've decided that these are what the parameters are.  
	---  
	---We can see this being used in R* scripts such as "am_mp_property_int.ysc.c4":  
	---l_11A1 = PED::GET_VEHICLE_PED_IS_IN(PLAYER::PLAYER_PED_ID(), 1);  
	---...  
	---VEHICLE::SET_VEHICLE_DOORS_LOCKED_FOR_ALL_PLAYERS(l_11A1, 1);  
	SET_VEHICLE_DOORS_LOCKED_FOR_ALL_PLAYERS = function(vehicle, toggle) invoker.call(0xA2F80B8D040727CC, vehicle, toggle) end,
	---  
	SET_VEHICLE_DOORS_LOCKED_FOR_NON_SCRIPT_PLAYERS = function(vehicle, toggle) invoker.call(0x9737A37136F07E75, vehicle, toggle) end,
	---  
	SET_VEHICLE_DOORS_LOCKED_FOR_TEAM = function(vehicle, team, toggle) invoker.call(0xB81F6D4A8F5EEBA8, vehicle, team, toggle) end,
	---  
	SET_VEHICLE_DOORS_LOCKED_FOR_ALL_TEAMS = function(vehicle, toggle) invoker.call(0x203B527D1B77904C, vehicle, toggle) end,
	---  
	SET_VEHICLE_DONT_TERMINATE_TASK_WHEN_ACHIEVED = function(vehicle) invoker.call(0x76D26A22750E849E, vehicle) end,
	---0.0f = engine rev minimum  
	---1.0f = engine rev limit  
	_SET_VEHICLE_MAX_LAUNCH_ENGINE_REVS = function(vehicle, modifier) invoker.call(0x5AE614ECA5FDD423, vehicle, modifier) end,
	---  
	_GET_VEHICLE_THROTTLE = function(vehicle) return invoker.call(0x92D96892FC06AF22, vehicle).float end,
	---Explodes a selected vehicle.  
	---  
	---Vehicle vehicle = Vehicle you want to explode.  
	---BOOL isAudible = If explosion makes a sound.  
	---BOOL isInvisible = If the explosion is invisible or not.  
	---  
	---First BOOL does not give any visual explosion, the vehicle just falls apart completely but slowly and starts to burn.  
	EXPLODE_VEHICLE = function(vehicle, isAudible, isInvisible) invoker.call(0xBA71116ADF5B514C, vehicle, isAudible, isInvisible) end,
	---Tested on the player's current vehicle. Unless you kill the driver, the vehicle doesn't loose control, however, if enabled, explodeOnImpact is still active. The moment you crash, boom.  
	SET_VEHICLE_OUT_OF_CONTROL = function(vehicle, killDriver, explodeOnImpact) invoker.call(0xF19D095E42D430CC, vehicle, killDriver, explodeOnImpact) end,
	---  
	SET_VEHICLE_TIMED_EXPLOSION = function(vehicle, ped, toggle) invoker.call(0x2E0A74E1002380B1, vehicle, ped, toggle) end,
	---  
	ADD_VEHICLE_PHONE_EXPLOSIVE_DEVICE = function(vehicle) invoker.call(0x99AD4CCCB128CBC9, vehicle) end,
	---  
	CLEAR_VEHICLE_PHONE_EXPLOSIVE_DEVICE = function() invoker.call(0xAA3F739ABDDCF21F) end,
	---  
	HAS_VEHICLE_PHONE_EXPLOSIVE_DEVICE = function() return invoker.call(0x6ADAABD3068C5235).bool end,
	---  
	DETONATE_VEHICLE_PHONE_EXPLOSIVE_DEVICE = function() invoker.call(0xEF49CF0270307CBE) end,
	---  
	HAVE_VEHICLE_REAR_DOORS_BEEN_BLOWN_OPEN_BY_STICKYBOMB = function(vehicle) return invoker.call(0x6B407F2525E93644, vehicle).bool end,
	---This is not tested - it's just an assumption.  
	---- Nac  
	---  
	---Doesn't seem to work.  I'll try with an int instead. --JT  
	---  
	---Read the scripts, im dumpass.   
	---  
	---                            if (!VEHICLE::IS_TAXI_LIGHT_ON(l_115)) {  
	---                                VEHICLE::SET_TAXI_LIGHTS(l_115, 1);  
	---                            }  
	SET_TAXI_LIGHTS = function(vehicle, state) invoker.call(0x598803E85E8448D9, vehicle, state) end,
	---  
	IS_TAXI_LIGHT_ON = function(vehicle) return invoker.call(0x7504C0F113AB50FC, vehicle).bool end,
	---garageName example "Michael - Beverly Hills"  
	---  
	---Full list of garages by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/garages.json  
	IS_VEHICLE_IN_GARAGE_AREA = function(garageName, vehicle) return invoker.call(0xCEE4490CD57BB3C2, garageName, vehicle).bool end,
	---colorPrimary & colorSecondary are the paint index for the vehicle.  
	---For a list of valid paint indexes, view: https://pastebin.com/pwHci0xK  
	----------------------------------------------------------------------------  
	---Note: minimum color index is 0, maximum color index is (numColorIndices - 1)  
	---  
	---Full list of vehicle colors by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/vehicleColors.json  
	SET_VEHICLE_COLOURS = function(vehicle, colorPrimary, colorSecondary) invoker.call(0x4F1D4BE3A7F24601, vehicle, colorPrimary, colorSecondary) end,
	---It switch to highbeam when p1 is set to true.  
	SET_VEHICLE_FULLBEAM = function(vehicle, toggle) invoker.call(0x8B7FD87F0DDB421E, vehicle, toggle) end,
	---p1 (toggle) was always 1 (true) except in one case in the b678 scripts.  
	SET_VEHICLE_IS_RACING = function(vehicle, toggle) invoker.call(0x07116E24E9D1929D, vehicle, toggle) end,
	---p1, p2, p3 are RGB values for color (255,0,0 for Red, ect)  
	SET_VEHICLE_CUSTOM_PRIMARY_COLOUR = function(vehicle, r, g, b) invoker.call(0x7141766F91D15BEA, vehicle, r, g, b) end,
	---  
	GET_VEHICLE_CUSTOM_PRIMARY_COLOUR = function(vehicle, r, g, b) invoker.call(0xB64CF2CCA9D95F52, vehicle, r, g, b) end,
	---  
	CLEAR_VEHICLE_CUSTOM_PRIMARY_COLOUR = function(vehicle) invoker.call(0x55E1D2758F34E437, vehicle) end,
	---  
	GET_IS_VEHICLE_PRIMARY_COLOUR_CUSTOM = function(vehicle) return invoker.call(0xF095C0405307B21B, vehicle).bool end,
	---p1, p2, p3 are RGB values for color (255,0,0 for Red, ect)  
	SET_VEHICLE_CUSTOM_SECONDARY_COLOUR = function(vehicle, r, g, b) invoker.call(0x36CED73BFED89754, vehicle, r, g, b) end,
	---  
	GET_VEHICLE_CUSTOM_SECONDARY_COLOUR = function(vehicle, r, g, b) invoker.call(0x8389CD56CA8072DC, vehicle, r, g, b) end,
	---  
	CLEAR_VEHICLE_CUSTOM_SECONDARY_COLOUR = function(vehicle) invoker.call(0x5FFBDEEC3E8E2009, vehicle) end,
	---Check if Vehicle Secondary is avaliable for customize  
	GET_IS_VEHICLE_SECONDARY_COLOUR_CUSTOM = function(vehicle) return invoker.call(0x910A32E7AAD2656C, vehicle).bool end,
	---The parameter fade is a value from 0-1, where 0 is fresh paint.  
	SET_VEHICLE_ENVEFF_SCALE = function(vehicle, fade) invoker.call(0x3AFDC536C3D01674, vehicle, fade) end,
	---The result is a value from 0-1, where 0 is fresh paint.  
	GET_VEHICLE_ENVEFF_SCALE = function(vehicle) return invoker.call(0xA82819CAC9C4C403, vehicle).float end,
	---Hardcoded to not work in multiplayer.  
	SET_CAN_RESPRAY_VEHICLE = function(vehicle, state) invoker.call(0x52BBA29D5EC69356, vehicle, state) end,
	---Used for GTAO CEO/Associate spawned vehicles.  
	SET_GOON_BOSS_VEHICLE = function(vehicle, toggle) invoker.call(0xAB31EF4DE6800CE9, vehicle, toggle) end,
	---  
	SET_OPEN_REAR_DOORS_ON_EXPLOSION = function(vehicle, toggle) invoker.call(0x1B212B26DD3C04DF, vehicle, toggle) end,
	---  
	FORCE_SUBMARINE_SURFACE_MODE = function(vehicle, toggle) invoker.call(0x33506883545AC0DF, vehicle, toggle) end,
	---  
	FORCE_SUBMARINE_NEURTAL_BUOYANCY = function(p0, p1) invoker.call(0xC67DB108A9ADE3BE, p0, p1) end,
	---  
	SET_SUBMARINE_CRUSH_DEPTHS = function(vehicle, p1, depth1, depth2, depth3) invoker.call(0xC59872A5134879C7, vehicle, p1, depth1, depth2, depth3) end,
	---  
	GET_SUBMARINE_IS_UNDER_DESIGN_DEPTH = function(submarine) return invoker.call(0x3E71D0B300B7AA79, submarine).bool end,
	---  
	GET_SUBMARINE_NUMBER_OF_AIR_LEAKS = function(submarine) return invoker.call(0x093D6DDCA5B8FBAE, submarine).int end,
	---  
	SET_BOAT_IGNORE_LAND_PROBES = function(p0, p1) invoker.call(0xED5EDE9E676643C9, p0, p1) end,
	---Use the vehicle bounds (instead of viewport) when deciding if a vehicle is sufficiently above the water (waterheight.dat), bypassing wave simulation checks  
	_SET_BOUNDS_AFFECT_WATER_PROBES = function(vehicle, toggle) invoker.call(0x85FC953F6C6CBDE1, vehicle, toggle) end,
	---  
	SET_BOAT_ANCHOR = function(vehicle, toggle) invoker.call(0x75DBEC174AEEAD10, vehicle, toggle) end,
	---  
	CAN_ANCHOR_BOAT_HERE = function(vehicle) return invoker.call(0x26C10ECBDA5D043B, vehicle).bool end,
	---  
	CAN_ANCHOR_BOAT_HERE_IGNORE_PLAYERS = function(vehicle) return invoker.call(0x24F4121D07579880, vehicle).bool end,
	---  
	SET_BOAT_REMAINS_ANCHORED_WHILE_PLAYER_IS_DRIVER = function(vehicle, toggle) invoker.call(0xE3EBAAE484798530, vehicle, toggle) end,
	---No observed effect.  
	SET_FORCE_LOW_LOD_ANCHOR_MODE = function(vehicle, p1) invoker.call(0xB28B1FE5BFADD7F5, vehicle, p1) end,
	---  
	SET_BOAT_LOW_LOD_ANCHOR_DISTANCE = function(vehicle, value) invoker.call(0xE842A9398079BD82, vehicle, value) end,
	---  
	IS_BOAT_ANCHORED = function(vehicle) return invoker.call(0xB0AD1238A709B1A2, vehicle).bool end,
	---  
	SET_BOAT_SINKS_WHEN_WRECKED = function(vehicle, toggle) invoker.call(0x8F719973E1445BA2, vehicle, toggle) end,
	---  
	SET_BOAT_WRECKED = function(vehicle) invoker.call(0xBD32E46AA95C1DD2, vehicle) end,
	---Activate siren on vehicle (Only works if the vehicle has a siren).  
	SET_VEHICLE_SIREN = function(vehicle, toggle) invoker.call(0xF4924635A19EB37D, vehicle, toggle) end,
	---  
	IS_VEHICLE_SIREN_ON = function(vehicle) return invoker.call(0x4C9BF537BE2634B2, vehicle).bool end,
	---  
	IS_VEHICLE_SIREN_AUDIO_ON = function(vehicle) return invoker.call(0xB5CC40FBCB586380, vehicle).bool end,
	---If set to true, vehicle will not take crash damage, but is still susceptible to damage from bullets and explosives  
	SET_VEHICLE_STRONG = function(vehicle, toggle) invoker.call(0x3E8C8727991A8A0B, vehicle, toggle) end,
	---  
	REMOVE_VEHICLE_STUCK_CHECK = function(vehicle) invoker.call(0x8386BFB614D06749, vehicle) end,
	---  
	GET_VEHICLE_COLOURS = function(vehicle, colorPrimary, colorSecondary) invoker.call(0xA19435F193E081AC, vehicle, colorPrimary, colorSecondary) end,
	---Check if a vehicle seat is free.  
	---  
	---seatIndex  = -1 being the driver seat.  
	---Use GET_VEHICLE_MAX_NUMBER_OF_PASSENGERS(vehicle) - 1 for last seat index.  
	---isTaskRunning = on true the function returns already false while a task on the target seat is running (TASK_ENTER_VEHICLE/TASK_SHUFFLE_TO_NEXT_VEHICLE_SEAT) - on false only when a ped is finally sitting in the seat.  
	IS_VEHICLE_SEAT_FREE = function(vehicle, seatIndex, isTaskRunning) return invoker.call(0x22AC59A870E6A669, vehicle, seatIndex, isTaskRunning).bool end,
	---If there is no ped in the seat, and the game considers the vehicle as ambient population, this will create a random occupant ped in the seat, which may be cleaned up by the game fairly soon if not marked as script-owned mission entity.  
	---  
	---Seat indexes:  
	----1 = Driver  
	---0 = Front Right Passenger  
	---1 = Back Left Passenger  
	---2 = Back Right Passenger  
	---3 = Further Back Left Passenger (vehicles > 4 seats)  
	---4 = Further Back Right Passenger (vehicles > 4 seats)  
	---etc.  
	---  
	---If p2 is true it uses a different GetOccupant function.  
	GET_PED_IN_VEHICLE_SEAT = function(vehicle, seatIndex, p2) return invoker.call(0xBB40DD2270B65366, vehicle, seatIndex, p2).int end,
	---  
	GET_LAST_PED_IN_VEHICLE_SEAT = function(vehicle, seatIndex) return invoker.call(0x83F969AA1EE2A664, vehicle, seatIndex).int end,
	---  
	GET_VEHICLE_LIGHTS_STATE = function(vehicle, lightsOn, highbeamsOn) return invoker.call(0xB91B4C20085BD12F, vehicle, lightsOn, highbeamsOn).bool end,
	---wheelID used for 4 wheelers seem to be (0, 1, 4, 5)  
	---completely - is to check if tire completely gone from rim.  
	---  
	---'0 = wheel_lf / bike, plane or jet front  
	---'1 = wheel_rf  
	---'2 = wheel_lm / in 6 wheels trailer, plane or jet is first one on left  
	---'3 = wheel_rm / in 6 wheels trailer, plane or jet is first one on right  
	---'4 = wheel_lr / bike rear / in 6 wheels trailer, plane or jet is last one on left  
	---'5 = wheel_rr / in 6 wheels trailer, plane or jet is last one on right  
	---'45 = 6 wheels trailer mid wheel left  
	---'47 = 6 wheels trailer mid wheel right  
	IS_VEHICLE_TYRE_BURST = function(vehicle, wheelID, completely) return invoker.call(0xBA291848A0815CA9, vehicle, wheelID, completely).bool end,
	---SCALE: Setting the speed to 30 would result in a speed of roughly 60mph, according to speedometer.  
	---  
	---Speed is in meters per second  
	---You can convert meters/s to mph here:  
	---http://www.calculateme.com/Speed/MetersperSecond/ToMilesperHour.htm  
	SET_VEHICLE_FORWARD_SPEED = function(vehicle, speed) invoker.call(0xAB54A438726D25D5, vehicle, speed) end,
	---Seems to be identical to SET_VEHICLE_FORWARD_SPEED  
	SET_VEHICLE_FORWARD_SPEED_XY = function(vehicle, speed) invoker.call(0x6501129C9E0FFA05, vehicle, speed) end,
	---This native makes the vehicle stop immediately, as happens when we enter a MP garage.  
	---  
	---. distance defines how far it will travel until stopping. Garage doors use 3.0.  
	---  
	---. If killEngine is set to 1, you cannot resume driving the vehicle once it stops. This looks like is a bitmapped integer.  
	BRING_VEHICLE_TO_HALT = function(vehicle, distance, duration, p3) invoker.call(0x260BE8F09E326A20, vehicle, distance, duration, p3) end,
	---  
	SET_VEHICLE_STEER_FOR_BUILDINGS = function(vehicle, p1) invoker.call(0xDCE97BDF8A0EABC8, vehicle, p1) end,
	---  
	SET_VEHICLE_CAUSES_SWERVING = function(vehicle, toggle) invoker.call(0x9849DE24FCF23CCC, vehicle, toggle) end,
	---  
	SET_IGNORE_PLANES_SMALL_PITCH_CHANGE = function(p0, p1) invoker.call(0x8664170EF165C4A6, p0, p1) end,
	---Stops CTaskBringVehicleToHalt  
	STOP_BRINGING_VEHICLE_TO_HALT = function(vehicle) invoker.call(0x7C06330BFDDA182E, vehicle) end,
	---Returns true if vehicle is halted by BRING_VEHICLE_TO_HALT  
	IS_VEHICLE_BEING_BROUGHT_TO_HALT = function(vehicle) return invoker.call(0xC69BB1D832A710EF, vehicle).bool end,
	---  
	LOWER_FORKLIFT_FORKS = function(forklift) invoker.call(0x923A293361DF44E5, forklift) end,
	---0.0 = Lowest 1.0 = Highest. This is best to be used if you wanna pick-up a car since un-realistically on GTA V forklifts can't pick up much of anything due to vehicle mass. If you put this under a car then set it above 0.0 to a 'lifted-value' it will raise the car with no issue lol  
	SET_FORKLIFT_FORK_HEIGHT = function(vehicle, height) invoker.call(0x37EBBF3117BD6A25, vehicle, height) end,
	---  
	IS_ENTITY_ATTACHED_TO_HANDLER_FRAME = function(vehicle, entity) return invoker.call(0x57715966069157AD, vehicle, entity).bool end,
	---  
	IS_ANY_ENTITY_ATTACHED_TO_HANDLER_FRAME = function(vehicle) return invoker.call(0x62CA17B74C435651, vehicle).bool end,
	---Finds the vehicle that is carrying this entity with a handler frame.  
	---The model of the entity must be prop_contr_03b_ld or the function will return 0.  
	FIND_HANDLER_VEHICLE_CONTAINER_IS_ATTACHED_TO = function(entity) return invoker.call(0x375E7FC44F21C8AB, entity).int end,
	---  
	IS_HANDLER_FRAME_LINED_UP_WITH_CONTAINER = function(vehicle, entity) return invoker.call(0x89D630CF5EA96D23, vehicle, entity).bool end,
	---  
	ATTACH_CONTAINER_TO_HANDLER_FRAME_WHEN_LINED_UP = function(vehicle, entity) invoker.call(0x6A98C2ECF57FA5D4, vehicle, entity) end,
	---  
	DETACH_CONTAINER_FROM_HANDLER_FRAME = function(vehicle) invoker.call(0x7C0043FDFF6436BC, vehicle) end,
	---  
	SET_VEHICLE_DISABLE_HEIGHT_MAP_AVOIDANCE = function(vehicle, p1) invoker.call(0x8AA9180DE2FEDD45, vehicle, p1) end,
	---  
	_SET_PLANE_AVOIDS_OTHERS = function(vehicle, toggle) invoker.call(0xBAFB99B304BC52A7, vehicle, toggle) end,
	---  
	SET_BOAT_DISABLE_AVOIDANCE = function(vehicle, p1) invoker.call(0x0A6A279F3AA4FD70, vehicle, p1) end,
	---  
	IS_HELI_LANDING_AREA_BLOCKED = function(vehicle) return invoker.call(0x634148744F385576, vehicle).bool end,
	---Used on helicopters and blimps during the CTaskVehicleLand task. Sets a value on the task to 10f  
	SET_SHORT_SLOWDOWN_FOR_LANDING = function(vehicle) invoker.call(0x107A473D7A6647A9, vehicle) end,
	---  
	SET_HELI_TURBULENCE_SCALAR = function(vehicle, p1) invoker.call(0xE6F13851780394DA, vehicle, p1) end,
	---Initially used in Max Payne 3, that's why we know the name.  
	SET_CAR_BOOT_OPEN = function(vehicle) invoker.call(0xFC40CBF7B90CA77C, vehicle) end,
	---"To burst tyres VEHICLE::SET_VEHICLE_TYRE_BURST(vehicle, 0, true, 1000.0)  
	---to burst all tyres type it 8 times where p1 = 0 to 7.  
	---  
	---p3 seems to be how much damage it has taken. 0 doesn't deflate them, 1000 completely deflates them.  
	---  
	---'0 = wheel_lf / bike, plane or jet front  
	---'1 = wheel_rf  
	---'2 = wheel_lm / in 6 wheels trailer, plane or jet is first one on left  
	---'3 = wheel_rm / in 6 wheels trailer, plane or jet is first one on right  
	---'4 = wheel_lr / bike rear / in 6 wheels trailer, plane or jet is last one on left  
	---'5 = wheel_rr / in 6 wheels trailer, plane or jet is last one on right  
	---'45 = 6 wheels trailer mid wheel left  
	---'47 = 6 wheels trailer mid wheel right  
	SET_VEHICLE_TYRE_BURST = function(vehicle, index, onRim, p3) invoker.call(0xEC6A202EE4960385, vehicle, index, onRim, p3) end,
	---Closes all doors of a vehicle:  
	SET_VEHICLE_DOORS_SHUT = function(vehicle, closeInstantly) invoker.call(0x781B3D62BB013EF5, vehicle, closeInstantly) end,
	---Allows you to toggle bulletproof tires.  
	SET_VEHICLE_TYRES_CAN_BURST = function(vehicle, toggle) invoker.call(0xEB9DC3C7D8596C46, vehicle, toggle) end,
	---  
	GET_VEHICLE_TYRES_CAN_BURST = function(vehicle) return invoker.call(0x678B9BB8C3F58FEB, vehicle).bool end,
	---  
	SET_VEHICLE_WHEELS_CAN_BREAK = function(vehicle, enabled) invoker.call(0x29B18B4FD460CA8F, vehicle, enabled) end,
	---doorId: see SET_VEHICLE_DOOR_SHUT  
	SET_VEHICLE_DOOR_OPEN = function(vehicle, doorId, loose, openInstantly) invoker.call(0x7C65DAC73C35C862, vehicle, doorId, loose, openInstantly) end,
	---doorId: see SET_VEHICLE_DOOR_SHUT  
	---  
	---Usually used alongside other vehicle door natives.  
	SET_VEHICLE_DOOR_AUTO_LOCK = function(vehicle, doorId, toggle) invoker.call(0x3B458DDB57038F08, vehicle, doorId, toggle) end,
	---  
	SET_FLEEING_VEHICLES_USE_SWITCHED_OFF_NODES = function(p0) invoker.call(0xA247F9EF01D8082E, p0) end,
	---windowIndex:  
	---0 = Front Right Window  
	---1 = Front Left Window  
	---2 = Back Right Window  
	---3 = Back Left Window  
	---4 = Unknown  
	---5 = Unknown  
	---6 = Windscreen  
	---7 = Rear Windscreen  
	REMOVE_VEHICLE_WINDOW = function(vehicle, windowIndex) invoker.call(0xA711568EEDB43069, vehicle, windowIndex) end,
	---Roll down all the windows of the vehicle passed through the first parameter.  
	ROLL_DOWN_WINDOWS = function(vehicle) invoker.call(0x85796B0549DDE156, vehicle) end,
	---windowIndex:  
	---0 = Front Left Window  
	---1 = Front Right Window  
	---2 = Rear Left Window  
	---3 = Rear Right Window  
	---4 = Front Windscreen  
	---5 = Rear Windscreen  
	---6 = Mid Left  
	---7 = Mid Right  
	---8 = Invalid  
	ROLL_DOWN_WINDOW = function(vehicle, windowIndex) invoker.call(0x7AD9E6CE657D69E3, vehicle, windowIndex) end,
	---windowIndex:  
	---0 = Front Left Window  
	---1 = Front Right Window  
	---2 = Rear Left Window  
	---3 = Rear Right Window  
	---4 = Front Windscreen  
	---5 = Rear Windscreen  
	---6 = Mid Left  
	---7 = Mid Right  
	---8 = Invalid  
	ROLL_UP_WINDOW = function(vehicle, windowIndex) invoker.call(0x602E548F46E24D59, vehicle, windowIndex) end,
	---windowIndex:  
	---0 = Front Left Window  
	---1 = Front Right Window  
	---2 = Rear Left Window  
	---3 = Rear Right Window  
	---4 = Front Windscreen  
	---5 = Rear Windscreen  
	---6 = Mid Left  
	---7 = Mid Right  
	---8 = Invalid  
	SMASH_VEHICLE_WINDOW = function(vehicle, windowIndex) invoker.call(0x9E5B5E4D2CCD2259, vehicle, windowIndex) end,
	---windowIndex:  
	---0 = Front Left Window  
	---1 = Front Right Window  
	---2 = Rear Left Window  
	---3 = Rear Right Window  
	---4 = Front Windscreen  
	---5 = Rear Windscreen  
	---6 = Mid Left  
	---7 = Mid Right  
	---8 = Invalid  
	---  
	---Additional information: FIX_VEHICLE_WINDOW (0x140D0BB88) references an array of bone vehicle indices (0x141D4B3E0) { 2Ah, 2Bh, 2Ch, 2Dh, 2Eh, 2Fh, 28h, 29h } that correspond to: window_lf, window_rf, window_lr, window_rr, window_lm, window_rm, windscreen, windscreen_r. This array is used by most vehwindow natives.  
	---  
	---Also, this function is coded to not work on vehicles of type: CBike, Bmx, CBoat, CTrain, and CSubmarine.  
	FIX_VEHICLE_WINDOW = function(vehicle, windowIndex) invoker.call(0x772282EBEB95E682, vehicle, windowIndex) end,
	---Detaches the vehicle's windscreen.  
	---For further information, see : gtaforums.com/topic/859570-glass/#entry1068894566  
	POP_OUT_VEHICLE_WINDSCREEN = function(vehicle) invoker.call(0x6D645D59FB5F5AD3, vehicle) end,
	---Pops off the "roof" bone in the direction of the specified offset from the vehicle.  
	POP_OFF_VEHICLE_ROOF_WITH_IMPULSE = function(vehicle, x, y, z) invoker.call(0xE38CB9D7D39FDBCC, vehicle, x, y, z) end,
	---set's if the vehicle has lights or not.  
	---not an on off toggle.  
	---p1 = 0 ;vehicle normal lights, off then lowbeams, then highbeams  
	---p1 = 1 ;vehicle doesn't have lights, always off  
	---p1 = 2 ;vehicle has always on lights  
	---p1 = 3 ;or even larger like 4,5,... normal lights like =1  
	---note1: when using =2 on day it's lowbeam,highbeam  
	---but at night it's lowbeam,lowbeam,highbeam  
	---note2: when using =0 it's affected by day or night for highbeams don't exist in daytime.  
	SET_VEHICLE_LIGHTS = function(vehicle, state) invoker.call(0x34E710FF01247C5A, vehicle, state) end,
	---  
	SET_VEHICLE_USE_PLAYER_LIGHT_SETTINGS = function(vehicle, toggle) invoker.call(0xC45C27EF50F36ADC, vehicle, toggle) end,
	---p1 can be either 0, 1 or 2.  
	---  
	---Determines how vehicle lights behave when toggled.  
	---  
	---0 = Default (Lights can be toggled between off, normal and high beams)  
	---1 = Lights Disabled (Lights are fully disabled, cannot be toggled)  
	---2 = Always On (Lights can be toggled between normal and high beams)  
	SET_VEHICLE_HEADLIGHT_SHADOWS = function(vehicle, p1) invoker.call(0x1FD09E7390A74D54, vehicle, p1) end,
	---  
	SET_VEHICLE_ALARM = function(vehicle, state) invoker.call(0xCDE5E70C1DDB954C, vehicle, state) end,
	---  
	START_VEHICLE_ALARM = function(vehicle) invoker.call(0xB8FF7AB45305C345, vehicle) end,
	---  
	IS_VEHICLE_ALARM_ACTIVATED = function(vehicle) return invoker.call(0x4319E335B71FFF34, vehicle).bool end,
	---  
	SET_VEHICLE_INTERIORLIGHT = function(vehicle, toggle) invoker.call(0xBC2042F090AF6AD3, vehicle, toggle) end,
	---Sets some bit of vehicle  
	SET_VEHICLE_FORCE_INTERIORLIGHT = function(vehicle, toggle) invoker.call(0x8821196D91FA2DE5, vehicle, toggle) end,
	---multiplier = brightness of head lights.  
	---this value isn't capped afaik.  
	---  
	---multiplier = 0.0 no lights  
	---multiplier = 1.0 default game value  
	---  
	SET_VEHICLE_LIGHT_MULTIPLIER = function(vehicle, multiplier) invoker.call(0xB385454F8791F57C, vehicle, multiplier) end,
	---  
	ATTACH_VEHICLE_TO_TRAILER = function(vehicle, trailer, radius) invoker.call(0x3C7D42D58F770B54, vehicle, trailer, radius) end,
	---This is the proper way of attaching vehicles to the car carrier, it's what Rockstar uses. Video Demo: https://www.youtube.com/watch?v=2lVEIzf7bgo  
	ATTACH_VEHICLE_ON_TO_TRAILER = function(vehicle, trailer, offsetX, offsetY, offsetZ, coordsX, coordsY, coordsZ, rotationX, rotationY, rotationZ, disableCollisions) invoker.call(0x16B5E274BDE402F8, vehicle, trailer, offsetX, offsetY, offsetZ, coordsX, coordsY, coordsZ, rotationX, rotationY, rotationZ, disableCollisions) end,
	---  
	STABILISE_ENTITY_ATTACHED_TO_HELI = function(vehicle, entity, p2) invoker.call(0x374706271354CB18, vehicle, entity, p2) end,
	---  
	DETACH_VEHICLE_FROM_TRAILER = function(vehicle) invoker.call(0x90532EDF0D2BDD86, vehicle) end,
	---  
	IS_VEHICLE_ATTACHED_TO_TRAILER = function(vehicle) return invoker.call(0xE7CF3C4F9F489F0C, vehicle).bool end,
	---  
	SET_TRAILER_INVERSE_MASS_SCALE = function(vehicle, p1) invoker.call(0x2A8F319B392E7B3F, vehicle, p1) end,
	---in the decompiled scripts, seems to be always called on the vehicle right after being attached to a trailer.  
	SET_TRAILER_LEGS_RAISED = function(vehicle) invoker.call(0x95CF53B3D687F9FA, vehicle) end,
	---  
	SET_TRAILER_LEGS_LOWERED = function(vehicle) invoker.call(0x878C75C09FBDB942, vehicle) end,
	---tyreIndex = 0 to 4 on normal vehicles  
	---  
	---'0 = wheel_lf / bike, plane or jet front  
	---'1 = wheel_rf  
	---'2 = wheel_lm / in 6 wheels trailer, plane or jet is first one on left  
	---'3 = wheel_rm / in 6 wheels trailer, plane or jet is first one on right  
	---'4 = wheel_lr / bike rear / in 6 wheels trailer, plane or jet is last one on left  
	---'5 = wheel_rr / in 6 wheels trailer, plane or jet is last one on right  
	---'45 = 6 wheels trailer mid wheel left  
	---'47 = 6 wheels trailer mid wheel right  
	SET_VEHICLE_TYRE_FIXED = function(vehicle, tyreIndex) invoker.call(0x6E13FC662B882D1D, vehicle, tyreIndex) end,
	---Sets a vehicle's license plate text.  8 chars maximum.  
	---  
	---Example:  
	---Ped playerPed = PLAYER::PLAYER_PED_ID();  
	---Vehicle veh = PED::GET_VEHICLE_PED_IS_USING(playerPed);  
	---char *plateText = "KING";  
	---VEHICLE::SET_VEHICLE_NUMBER_PLATE_TEXT(veh, plateText);  
	SET_VEHICLE_NUMBER_PLATE_TEXT = function(vehicle, plateText) invoker.call(0x95A88F0B409CDA47, vehicle, plateText) end,
	---Returns the license plate text from a vehicle. 8 chars maximum.  
	GET_VEHICLE_NUMBER_PLATE_TEXT = function(vehicle) return invoker.call(0x7CE1CCB9B293020E, vehicle).str end,
	---Returns the number of *types* of licence plates, enumerated below in SET_VEHICLE_NUMBER_PLATE_TEXT_INDEX.  
	GET_NUMBER_OF_VEHICLE_NUMBER_PLATES = function() return invoker.call(0x4C4D6B2644F458CB).int end,
	---Plates:  
	---Blue/White - 0  
	---Yellow/black - 1  
	---Yellow/Blue - 2  
	---Blue/White2 - 3  
	---Blue/White3 - 4  
	---Yankton - 5  
	SET_VEHICLE_NUMBER_PLATE_TEXT_INDEX = function(vehicle, plateIndex) invoker.call(0x9088EB5A43FFB0A1, vehicle, plateIndex) end,
	---Returns the PlateType of a vehicle  
	---      Blue_on_White_1 = 3,  
	---      Blue_on_White_2 = 0,  
	---      Blue_on_White_3 = 4,  
	---      Yellow_on_Blue = 2,  
	---       Yellow_on_Black = 1,  
	---      North_Yankton = 5,  
	GET_VEHICLE_NUMBER_PLATE_TEXT_INDEX = function(vehicle) return invoker.call(0xF11BC2DD9A3E7195, vehicle).int end,
	---  
	SET_RANDOM_TRAINS = function(toggle) invoker.call(0x80D9F74197EA47D9, toggle) end,
	---Train models HAVE TO be loaded (requested) before you use this.  
	---For variation 15 - request:  
	---  
	---freight  
	---freightcar  
	---freightgrain  
	---freightcont1  
	---freightcont2  
	---freighttrailer  
	---  
	---  
	CREATE_MISSION_TRAIN = function(variation, x, y, z, direction, p5, p6) return invoker.call(0x63C6CCA8E68AE8C8, variation, x, y, z, direction, p5, p6).int end,
	---Toggles whether ambient trains can spawn on the specified track or not  
	---  
	---`trackId` is the internal id of the train track to switch.  
	---`state` is whether ambient trains can spawn or not  
	---  
	---trackIds  
	---0 (`trains1.dat`) Main track around SA  
	---1 (`trains2.dat`) Davis Quartz Quarry branch  
	---2 (`trains3.dat`) Second track alongside live track along Roy Lewenstein Blv.  
	---3 (`trains4.dat`) Metro track circuit  
	---4 (`trains5.dat`) Branch in Mirror Park Railyard  
	---5 (`trains6.dat`) Branch in Mirror Park Railyard  
	---6 (`trains7.dat`) LS branch to Mirror Park Railyard  
	---7 (`trains8.dat`) Overground part of metro track along Forum Dr.  
	---8 (`trains9.dat`) Branch to Mirror Park Railyard  
	---9 (`trains10.dat`) Yankton train  
	---10 (`trains11.dat`) Part of metro track near mission row  
	---11 (`trains12.dat`) Yankton prologue mission train  
	---Full list of all train tracks + track nodes by DurtyFree https://github.com/DurtyFree/gta-v-data-dumps/blob/master/traintracks.json  
	SWITCH_TRAIN_TRACK = function(trackId, state) invoker.call(0xFD813BB7DB977F20, trackId, state) end,
	---Only called once inside main_persitant with the parameters p0 = 0, p1 = 120000  
	---  
	---trackIndex: 0 - 26  
	---Full list of all train tracks + track nodes by DurtyFree https://github.com/DurtyFree/gta-v-data-dumps/blob/master/traintracks.json  
	SET_TRAIN_TRACK_SPAWN_FREQUENCY = function(trackIndex, frequency) invoker.call(0x21973BBF8D17EDFA, trackIndex, frequency) end,
	---  
	ALLOW_TRAIN_TO_BE_REMOVED_BY_POPULATION = function(p0) invoker.call(0x2310A8F9421EBF43, p0) end,
	---  
	DELETE_ALL_TRAINS = function() invoker.call(0x736A718577F39C7D) end,
	---  
	SET_TRAIN_SPEED = function(train, speed) invoker.call(0xAA0BC91BE0B796E3, train, speed) end,
	---  
	SET_TRAIN_CRUISE_SPEED = function(train, speed) invoker.call(0x16469284DB8C62B5, train, speed) end,
	---  
	SET_RANDOM_BOATS = function(toggle) invoker.call(0x84436EC293B1415F, toggle) end,
	---  
	SET_RANDOM_BOATS_MP = function(toggle) invoker.call(0xDA5E12F728DB30CA, toggle) end,
	---  
	SET_GARBAGE_TRUCKS = function(toggle) invoker.call(0x2AFD795EEAC8D30D, toggle) end,
	---Maximum amount of vehicles with vehicle stuck check appears to be 16.  
	DOES_VEHICLE_HAVE_STUCK_VEHICLE_CHECK = function(vehicle) return invoker.call(0x57E4C39DE5EE8470, vehicle).bool end,
	---See REQUEST_VEHICLE_RECORDING  
	GET_VEHICLE_RECORDING_ID = function(recording, script) return invoker.call(0x21543C612379DB3C, recording, script).int end,
	---Request the vehicle recording defined by the lowercase format string "%s%03d.yvr". For example, REQUEST_VEHICLE_RECORDING(1, "FBIs1UBER") corresponds to fbis1uber001.yvr.  
	---For all vehicle recording/playback natives, "script" is a common prefix that usually corresponds to the script/mission the recording is used in, "recording" is its int suffix, and "id" (e.g., in native GET_TOTAL_DURATION_OF_VEHICLE_RECORDING_ID) corresponds to a unique identifier within the recording streaming module.  
	---Note that only 24 recordings (hardcoded in multiple places) can ever active at a given time before clobbering begins.  
	REQUEST_VEHICLE_RECORDING = function(recording, script) invoker.call(0xAF514CABE74CBF15, recording, script) end,
	---See REQUEST_VEHICLE_RECORDING  
	HAS_VEHICLE_RECORDING_BEEN_LOADED = function(recording, script) return invoker.call(0x300D614A4C785FC4, recording, script).bool end,
	---See REQUEST_VEHICLE_RECORDING  
	REMOVE_VEHICLE_RECORDING = function(recording, script) invoker.call(0xF1160ACCF98A3FC8, recording, script) end,
	---  
	GET_POSITION_OF_VEHICLE_RECORDING_ID_AT_TIME = function(id, time) return invoker.call(0x92523B76657A517D, id, time).scr_vec3 end,
	---This native does no interpolation between pathpoints. The same position will be returned for all times up to the next pathpoint in the recording.  
	---  
	---See REQUEST_VEHICLE_RECORDING  
	GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME = function(recording, time, script) return invoker.call(0xD242728AA6F0FBA2, recording, time, script).scr_vec3 end,
	---  
	GET_ROTATION_OF_VEHICLE_RECORDING_ID_AT_TIME = function(id, time) return invoker.call(0xF0F2103EFAF8CBA7, id, time).scr_vec3 end,
	---This native does no interpolation between pathpoints. The same rotation will be returned for all times up to the next pathpoint in the recording.  
	---  
	---See REQUEST_VEHICLE_RECORDING  
	GET_ROTATION_OF_VEHICLE_RECORDING_AT_TIME = function(recording, time, script) return invoker.call(0x2058206FBE79A8AD, recording, time, script).scr_vec3 end,
	---  
	GET_TOTAL_DURATION_OF_VEHICLE_RECORDING_ID = function(id) return invoker.call(0x102D125411A7B6E6, id).float end,
	---See REQUEST_VEHICLE_RECORDING  
	GET_TOTAL_DURATION_OF_VEHICLE_RECORDING = function(recording, script) return invoker.call(0x0E48D1C262390950, recording, script).float end,
	---Distance traveled in the vehicles current recording.  
	GET_POSITION_IN_RECORDING = function(vehicle) return invoker.call(0x2DACD605FC681475, vehicle).float end,
	---Can be used with GET_TOTAL_DURATION_OF_VEHICLE_RECORDING{_ID} to compute a percentage.  
	GET_TIME_POSITION_IN_RECORDING = function(vehicle) return invoker.call(0x5746F3A7AB7FE544, vehicle).float end,
	---p3 is some flag related to 'trailers' (invokes CVehicle::GetTrailer).  
	---  
	---See REQUEST_VEHICLE_RECORDING  
	START_PLAYBACK_RECORDED_VEHICLE = function(vehicle, recording, script, p3) invoker.call(0x3F878F92B3A7A071, vehicle, recording, script, p3) end,
	---flags requires further research, e.g., 0x4/0x8 are related to the AI driving task and 0x20 is internally set and interacts with dynamic entity components.  
	---  
	---time, often zero and capped at 500, is related to SET_PLAYBACK_TO_USE_AI_TRY_TO_REVERT_BACK_LATER  
	START_PLAYBACK_RECORDED_VEHICLE_WITH_FLAGS = function(vehicle, recording, script, flags, time, drivingStyle) invoker.call(0x7D80FD645D4DA346, vehicle, recording, script, flags, time, drivingStyle) end,
	---Often called after START_PLAYBACK_RECORDED_VEHICLE and SKIP_TIME_IN_PLAYBACK_RECORDED_VEHICLE; similar in use to FORCE_ENTITY_AI_AND_ANIMATION_UPDATE.  
	FORCE_PLAYBACK_RECORDED_VEHICLE_UPDATE = function(vehicle, p1) invoker.call(0x1F2E4E06DEA8992B, vehicle, p1) end,
	---  
	STOP_PLAYBACK_RECORDED_VEHICLE = function(vehicle) invoker.call(0x54833611C17ABDEA, vehicle) end,
	---  
	PAUSE_PLAYBACK_RECORDED_VEHICLE = function(vehicle) invoker.call(0x632A689BF42301B1, vehicle) end,
	---  
	UNPAUSE_PLAYBACK_RECORDED_VEHICLE = function(vehicle) invoker.call(0x8879EE09268305D5, vehicle) end,
	---  
	IS_PLAYBACK_GOING_ON_FOR_VEHICLE = function(vehicle) return invoker.call(0x1C8A4C2C19E68EEC, vehicle).bool end,
	---  
	IS_PLAYBACK_USING_AI_GOING_ON_FOR_VEHICLE = function(vehicle) return invoker.call(0xAEA8FD591FAD4106, vehicle).bool end,
	---  
	GET_CURRENT_PLAYBACK_FOR_VEHICLE = function(vehicle) return invoker.call(0x42BC05C27A946054, vehicle).int end,
	---  
	SKIP_TO_END_AND_STOP_PLAYBACK_RECORDED_VEHICLE = function(vehicle) invoker.call(0xAB8E2EDA0C0A5883, vehicle) end,
	---  
	SET_PLAYBACK_SPEED = function(vehicle, speed) invoker.call(0x6683AB880E427778, vehicle, speed) end,
	---AI abides by the provided driving style (e.g., stopping at red lights or waiting behind traffic) while executing the specificed vehicle recording.  
	---  
	---FORCE_PLAYBACK_RECORDED_VEHICLE_UPDATE is a related native that deals with the AI physics for such recordings.  
	START_PLAYBACK_RECORDED_VEHICLE_USING_AI = function(vehicle, recording, script, speed, drivingStyle) invoker.call(0x29DE5FA52D00428C, vehicle, recording, script, speed, drivingStyle) end,
	---SET_TIME_POSITION_IN_RECORDING can be emulated by: desired_time - GET_TIME_POSITION_IN_RECORDING(vehicle)  
	SKIP_TIME_IN_PLAYBACK_RECORDED_VEHICLE = function(vehicle, time) invoker.call(0x9438F7AD68771A20, vehicle, time) end,
	---Identical to SET_PLAYBACK_TO_USE_AI_TRY_TO_REVERT_BACK_LATER with 0 as arguments for p1 and p3.  
	SET_PLAYBACK_TO_USE_AI = function(vehicle, drivingStyle) invoker.call(0xA549C3B37EA28131, vehicle, drivingStyle) end,
	---Time is number of milliseconds before reverting, zero for indefinitely.  
	SET_PLAYBACK_TO_USE_AI_TRY_TO_REVERT_BACK_LATER = function(vehicle, time, drivingStyle, p3) invoker.call(0x6E63860BBB190730, vehicle, time, drivingStyle, p3) end,
	---  
	SET_ADDITIONAL_ROTATION_FOR_RECORDED_VEHICLE_PLAYBACK = function(vehicle, x, y, z, p4) invoker.call(0x5845066D8A1EA7F7, vehicle, x, y, z, p4) end,
	---  
	SET_POSITION_OFFSET_FOR_RECORDED_VEHICLE_PLAYBACK = function(vehicle, x, y, z) invoker.call(0x796A877E459B99EA, vehicle, x, y, z) end,
	---  
	SET_GLOBAL_POSITION_OFFSET_FOR_RECORDED_VEHICLE_PLAYBACK = function(vehicle, x, y, z) invoker.call(0xFAF2A78061FD9EF4, vehicle, x, y, z) end,
	---A vehicle recording playback flag only used in jewelry_heist  
	SET_SHOULD_LERP_FROM_AI_TO_FULL_RECORDING = function(vehicle, p1) invoker.call(0x063AE2B2CC273588, vehicle, p1) end,
	---  
	EXPLODE_VEHICLE_IN_CUTSCENE = function(vehicle, p1) invoker.call(0x786A4EB67B01BF0B, vehicle, p1) end,
	---  
	ADD_VEHICLE_STUCK_CHECK_WITH_WARP = function(p0, p1, p2, p3, p4, p5, p6) invoker.call(0x2FA9923062DD396C, p0, p1, p2, p3, p4, p5, p6) end,
	---Makes the vehicle stop spawning naturally in traffic. Here's an essential example:  
	---  
	---VEHICLE::SET_VEHICLE_MODEL_IS_SUPPRESSED(MISC::GET_HASH_KEY("taco"), true);  
	---  
	---Full list of vehicles by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/vehicles.json  
	SET_VEHICLE_MODEL_IS_SUPPRESSED = function(model, suppressed) invoker.call(0x0FC2D89AC25A5814, model, suppressed) end,
	---Gets a random vehicle in a sphere at the specified position, of the specified radius.  
	---  
	---x: The X-component of the position of the sphere.  
	---y: The Y-component of the position of the sphere.  
	---z: The Z-component of the position of the sphere.  
	---radius: The radius of the sphere. Max is 9999.9004.  
	---modelHash: The vehicle model to limit the selection to. Pass 0 for any model.  
	---flags: The bitwise flags that modifies the behaviour of this function.  
	---  
	---Full list of vehicles by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/vehicles.json  
	GET_RANDOM_VEHICLE_IN_SPHERE = function(x, y, z, radius, modelHash, flags) return invoker.call(0x386F6CE5BAF6091C, x, y, z, radius, modelHash, flags).int end,
	---  
	GET_RANDOM_VEHICLE_FRONT_BUMPER_IN_SPHERE = function(p0, p1, p2, p3, p4, p5, p6) return invoker.call(0xC5574E0AEB86BA68, p0, p1, p2, p3, p4, p5, p6).int end,
	---  
	GET_RANDOM_VEHICLE_BACK_BUMPER_IN_SPHERE = function(p0, p1, p2, p3, p4, p5, p6) return invoker.call(0xB50807EABE20A8DC, p0, p1, p2, p3, p4, p5, p6).int end,
	---Example usage  
	---VEHICLE::GET_CLOSEST_VEHICLE(x, y, z, radius, hash, unknown leave at 70)   
	---  
	---x, y, z: Position to get closest vehicle to.  
	---radius: Max radius to get a vehicle.  
	---modelHash: Limit to vehicles with this model. 0 for any.  
	---flags: The bitwise flags altering the function's behaviour.  
	---  
	---Does not return police cars or helicopters.  
	---  
	---It seems to return police cars for me, does not seem to return helicopters, planes or boats for some reason  
	---  
	---Only returns non police cars and motorbikes with the flag set to 70 and modelHash to 0. ModelHash seems to always be 0 when not a modelHash in the scripts, as stated above.   
	---  
	---These flags were found in the b617d scripts: 0,2,4,6,7,23,127,260,2146,2175,12294,16384,16386,20503,32768,67590,67711,98309,100359.  
	---Converted to binary, each bit probably represents a flag as explained regarding another native here: gtaforums.com/topic/822314-guide-driving-styles  
	---  
	---Conversion of found flags to binary: https://pastebin.com/kghNFkRi  
	---  
	---At exactly 16384 which is 0100000000000000 in binary and 4000 in hexadecimal only planes are returned.   
	---  
	---It's probably more convenient to use worldGetAllVehicles(int *arr, int arrSize) and check the shortest distance yourself and sort if you want by checking the vehicle type with for example VEHICLE::IS_THIS_MODEL_A_BOAT  
	---  
	----------------------------------------------------------------------------  
	---  
	---Conclusion: This native is not worth trying to use. Use something like this instead: https://pastebin.com/xiFdXa7h  
	---  
	---Full list of vehicles by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/vehicles.json  
	GET_CLOSEST_VEHICLE = function(x, y, z, radius, modelHash, flags) return invoker.call(0xF73EB622C4F1689B, x, y, z, radius, modelHash, flags).int end,
	---Corrected p1. it's basically the 'carriage/trailer number'. So if the train has 3 trailers you'd call the native once with a var or 3 times with 1, 2, 3.  
	GET_TRAIN_CARRIAGE = function(train, trailerNumber) return invoker.call(0x08AAFD0814722BC3, train, trailerNumber).int end,
	---  
	IS_MISSION_TRAIN = function(train) return invoker.call(0xAD464F2E18836BFC, train).bool end,
	---  
	DELETE_MISSION_TRAIN = function(train) invoker.call(0x5B76B14AE875C795, train) end,
	---p1 is always 0  
	SET_MISSION_TRAIN_AS_NO_LONGER_NEEDED = function(train, p1) invoker.call(0xBBE7648349B49BE8, train, p1) end,
	---  
	SET_MISSION_TRAIN_COORDS = function(train, x, y, z) invoker.call(0x591CA673AA6AB736, train, x, y, z) end,
	---  
	IS_THIS_MODEL_A_BOAT = function(model) return invoker.call(0x45A9187928F4B9E3, model).bool end,
	---Checks if model is a boat, then checks for FLAG_IS_JETSKI.  
	IS_THIS_MODEL_A_JETSKI = function(model) return invoker.call(0x9537097412CF75FE, model).bool end,
	---  
	IS_THIS_MODEL_A_PLANE = function(model) return invoker.call(0xA0948AB42D7BA0DE, model).bool end,
	---  
	IS_THIS_MODEL_A_HELI = function(model) return invoker.call(0xDCE4334788AF94EA, model).bool end,
	---To check if the model is an amphibious car, use IS_THIS_MODEL_AN_AMPHIBIOUS_CAR.  
	IS_THIS_MODEL_A_CAR = function(model) return invoker.call(0x7F6DB52EEFC96DF8, model).bool end,
	---  
	IS_THIS_MODEL_A_TRAIN = function(model) return invoker.call(0xAB935175B22E822B, model).bool end,
	---  
	IS_THIS_MODEL_A_BIKE = function(model) return invoker.call(0xB50C0B0CEDC6CE84, model).bool end,
	---  
	IS_THIS_MODEL_A_BICYCLE = function(model) return invoker.call(0xBF94DD42F63BDED2, model).bool end,
	---  
	IS_THIS_MODEL_A_QUADBIKE = function(model) return invoker.call(0x39DAC362EE65FA28, model).bool end,
	---  
	IS_THIS_MODEL_AN_AMPHIBIOUS_CAR = function(model) return invoker.call(0x633F6F44A537EBB6, model).bool end,
	---  
	IS_THIS_MODEL_AN_AMPHIBIOUS_QUADBIKE = function(model) return invoker.call(0xA1A9FC1C76A6730D, model).bool end,
	---Equivalent of SET_HELI_BLADES_SPEED(vehicleHandle, 1.0f);  
	SET_HELI_BLADES_FULL_SPEED = function(vehicle) invoker.call(0xA178472EBB8AE60D, vehicle) end,
	---Sets the speed of the helicopter blades in percentage of the full speed.  
	---  
	---vehicleHandle: The helicopter.  
	---speed: The speed in percentage, 0.0f being 0% and 1.0f being 100%.  
	SET_HELI_BLADES_SPEED = function(vehicle, speed) invoker.call(0xFD280B4D7F3ABC4D, vehicle, speed) end,
	---  
	FORCE_SUB_THROTTLE_FOR_TIME = function(vehicle, p1, p2) invoker.call(0x99CAD8E7AFDB60FA, vehicle, p1, p2) end,
	---This has not yet been tested - it's just an assumption of what the types could be.  
	SET_VEHICLE_CAN_BE_TARGETTED = function(vehicle, state) invoker.call(0x3750146A28097A82, vehicle, state) end,
	---  
	SET_DONT_ALLOW_PLAYER_TO_ENTER_VEHICLE_IF_LOCKED_FOR_PLAYER = function(vehicle, p1) invoker.call(0xDBC631F109350B8C, vehicle, p1) end,
	---  
	SET_VEHICLE_CAN_BE_VISIBLY_DAMAGED = function(vehicle, state) invoker.call(0x4C7028F78FFD3681, vehicle, state) end,
	---  
	SET_VEHICLE_HAS_UNBREAKABLE_LIGHTS = function(vehicle, toggle) invoker.call(0x1AA8A837D2169D94, vehicle, toggle) end,
	---  
	SET_VEHICLE_RESPECTS_LOCKS_WHEN_HAS_DRIVER = function(vehicle, p1) invoker.call(0x2311DD7159F00582, vehicle, p1) end,
	---  
	SET_VEHICLE_CAN_EJECT_PASSENGERS_IF_LOCKED = function(p0, p1) invoker.call(0x065D03A9D6B2C6B5, p0, p1) end,
	---Dirt level does not become greater than 15.0  
	GET_VEHICLE_DIRT_LEVEL = function(vehicle) return invoker.call(0x8F17BC8BA08DA62B, vehicle).float end,
	---You can't use values greater than 15.0  
	---Also, R* does (float)(rand() % 15) to get a random dirt level when generating a vehicle.  
	SET_VEHICLE_DIRT_LEVEL = function(vehicle, dirtLevel) invoker.call(0x79D3B596FE44EE8B, vehicle, dirtLevel) end,
	---Appears to return true if the vehicle has any damage, including cosmetically.  
	GET_DOES_VEHICLE_HAVE_DAMAGE_DECALS = function(vehicle) return invoker.call(0xBCDC5017D3CE1E9E, vehicle).bool end,
	---doorId: see SET_VEHICLE_DOOR_SHUT  
	IS_VEHICLE_DOOR_FULLY_OPEN = function(vehicle, doorId) return invoker.call(0x3E933CFF7B111C22, vehicle, doorId).bool end,
	---Starts or stops the engine on the specified vehicle.  
	---  
	---vehicle: The vehicle to start or stop the engine on.  
	---value: true to turn the vehicle on; false to turn it off.  
	---instantly: if true, the vehicle will be set to the state immediately; otherwise, the current driver will physically turn on or off the engine.  
	---disableAutoStart: If true, the system will prevent the engine from starting when the player got into it.  
	SET_VEHICLE_ENGINE_ON = function(vehicle, value, instantly, disableAutoStart) invoker.call(0x2497C4717C8B881E, vehicle, value, instantly, disableAutoStart) end,
	---  
	SET_VEHICLE_UNDRIVEABLE = function(vehicle, toggle) invoker.call(0x8ABA6AF54B942B95, vehicle, toggle) end,
	---  
	SET_VEHICLE_PROVIDES_COVER = function(vehicle, toggle) invoker.call(0x5AFEEDD9BB2899D7, vehicle, toggle) end,
	---doorId: see SET_VEHICLE_DOOR_SHUT  
	SET_VEHICLE_DOOR_CONTROL = function(vehicle, doorId, speed, angle) invoker.call(0xF2BFA0430F0A0FCB, vehicle, doorId, speed, angle) end,
	---doorId: see SET_VEHICLE_DOOR_SHUT  
	SET_VEHICLE_DOOR_LATCHED = function(vehicle, doorId, p2, p3, p4) invoker.call(0xA5A9653A8D2CAF48, vehicle, doorId, p2, p3, p4) end,
	---doorId: see SET_VEHICLE_DOOR_SHUT  
	GET_VEHICLE_DOOR_ANGLE_RATIO = function(vehicle, doorId) return invoker.call(0xFE3F9C29F7B32BD5, vehicle, doorId).float end,
	---doorId: see SET_VEHICLE_DOOR_SHUT  
	GET_PED_USING_VEHICLE_DOOR = function(vehicle, doord) return invoker.call(0x218297BF0CFD853B, vehicle, doord).int end,
	---enum eDoorId  
	---{  
	---	VEH_EXT_DOOR_INVALID_ID = -1,  
	---	VEH_EXT_DOOR_DSIDE_F,  
	---	VEH_EXT_DOOR_DSIDE_R,  
	---	VEH_EXT_DOOR_PSIDE_F,  
	---	VEH_EXT_DOOR_PSIDE_R,  
	---	VEH_EXT_BONNET,  
	---	VEH_EXT_BOOT  
	---};  
	SET_VEHICLE_DOOR_SHUT = function(vehicle, doorId, closeInstantly) invoker.call(0x93D9BD300D7789E5, vehicle, doorId, closeInstantly) end,
	---doorId: see SET_VEHICLE_DOOR_SHUT  
	SET_VEHICLE_DOOR_BROKEN = function(vehicle, doorId, deleteDoor) invoker.call(0xD4D4F6A4AB575A33, vehicle, doorId, deleteDoor) end,
	---  
	SET_VEHICLE_CAN_BREAK = function(vehicle, toggle) invoker.call(0x59BF8C3D52C92F66, vehicle, toggle) end,
	---  
	DOES_VEHICLE_HAVE_ROOF = function(vehicle) return invoker.call(0x8AC862B0B32C5B80, vehicle).bool end,
	---  
	SET_VEHICLE_REMOVE_AGGRESSIVE_CARJACK_MISSION = function(p0) invoker.call(0xC4B3347BD68BD609, p0) end,
	---  
	SET_VEHICLE_AVOID_PLAYER_VEHICLE_RIOT_VAN_MISSION = function(p0) invoker.call(0xD3301660A57C9272, p0) end,
	---  
	SET_CARJACK_MISSION_REMOVAL_PARAMETERS = function(p0, p1) invoker.call(0xB9562064627FF9DB, p0, p1) end,
	---Returns true if MF_IS_BIG (strModelFlags 0x8) handling model flag is set.  
	IS_BIG_VEHICLE = function(vehicle) return invoker.call(0x9F243D3919F442FE, vehicle).bool end,
	---Returns the total amount of color combinations found in the vehicle's carvariations.meta entry.  
	GET_NUMBER_OF_VEHICLE_COLOURS = function(vehicle) return invoker.call(0x3B963160CD65D41E, vehicle).int end,
	---Sets the selected vehicle's colors to the specified index of the color combination found in the vehicle's carvariations.meta entry.  
	SET_VEHICLE_COLOUR_COMBINATION = function(vehicle, colorCombination) invoker.call(0x33E8CD3322E2FE31, vehicle, colorCombination) end,
	---Returns the index of the color combination found in the vehicle's carvariations.meta entry.  
	GET_VEHICLE_COLOUR_COMBINATION = function(vehicle) return invoker.call(0x6A842D197F845D56, vehicle).int end,
	---`color`: is the paint index for the vehicle.  
	---Paint index goes from 0 to 12.  
	---Be aware that it only works on xenon lights. Example: https://i.imgur.com/yV3cpG9.png  
	---Full list of all vehicle xenon lights by DurtyFree https://github.com/DurtyFree/gta-v-data-dumps/blob/master/vehicleColors.json  
	SET_VEHICLE_XENON_LIGHT_COLOR_INDEX = function(vehicle, colorIndex) invoker.call(0xE41033B25D003A07, vehicle, colorIndex) end,
	---Returns the headlight color index from the vehicle. Value between 0, 12.  
	---Use SET_VEHICLE_XENON_LIGHT_COLOR_INDEX to set the headlights color for the vehicle.  
	---Must enable xenon headlights before it'll take affect.  
	---  
	---Returns an int, value between 0-12 or 255 if no color is set.  
	GET_VEHICLE_XENON_LIGHT_COLOR_INDEX = function(vehicle) return invoker.call(0x3DFF319A831E0CDB, vehicle).int end,
	---Setting this to false, makes the specified vehicle to where if you press Y your character doesn't even attempt the animation to enter the vehicle. Hence it's not considered aka ignored.  
	SET_VEHICLE_IS_CONSIDERED_BY_PLAYER = function(vehicle, toggle) invoker.call(0x31B927BBC44156CD, vehicle, toggle) end,
	---  
	SET_VEHICLE_WILL_FORCE_OTHER_VEHICLES_TO_STOP = function(vehicle, toggle) invoker.call(0xBE5C1255A1830FF5, vehicle, toggle) end,
	---  
	SET_VEHICLE_ACT_AS_IF_HAS_SIREN_ON = function(vehicle, p1) invoker.call(0x9BECD4B9FEF3F8A6, vehicle, p1) end,
	---  
	SET_VEHICLE_USE_MORE_RESTRICTIVE_SPAWN_CHECKS = function(vehicle, p1) invoker.call(0x88BC673CA9E0AE99, vehicle, p1) end,
	---  
	SET_VEHICLE_MAY_BE_USED_BY_GOTO_POINT_ANY_MEANS = function(vehicle, p1) invoker.call(0xE851E480B814D4BA, vehicle, p1) end,
	---Not present in the retail version! It's just a nullsub.  
	---  
	---p0 always true (except in one case)  
	---successIndicator: 0 if success, -1 if failed  
	GET_RANDOM_VEHICLE_MODEL_IN_MEMORY = function(p0, modelHash, successIndicator) invoker.call(0x055BF0AC0C34F4FD, p0, modelHash, successIndicator) end,
	---enum VehicleLockStatus = {  
	---    None = 0,  
	---    Unlocked = 1,  
	---    Locked = 2,  
	---    LockedForPlayer = 3,  
	---    StickPlayerInside = 4, -- Doesn't allow players to exit the vehicle with the exit vehicle key.  
	---    CanBeBrokenInto = 7, -- Can be broken into the car. If the glass is broken, the value will be set to 1  
	---    CanBeBrokenIntoPersist = 8, -- Can be broken into persist  
	---    CannotBeTriedToEnter = 10, -- Cannot be tried to enter (Nothing happens when you press the vehicle enter key).  
	---}  
	GET_VEHICLE_DOOR_LOCK_STATUS = function(vehicle) return invoker.call(0x25BC98A59C2EA962, vehicle).int end,
	---Returns vehicle door lock state previously set with SET_VEHICLE_INDIVIDUAL_DOORS_LOCKED  
	GET_VEHICLE_INDIVIDUAL_DOOR_LOCK_STATUS = function(vehicle, doorId) return invoker.call(0xCA4AC3EAAE46EC7B, vehicle, doorId).int end,
	---doorID starts at 0, not seeming to skip any numbers. Four door vehicles intuitively range from 0 to 3.  
	IS_VEHICLE_DOOR_DAMAGED = function(veh, doorID) return invoker.call(0xB8E181E559464527, veh, doorID).bool end,
	---doorId: see SET_VEHICLE_DOOR_SHUT  
	SET_DOOR_ALLOWED_TO_BE_BROKEN_OFF = function(vehicle, doorId, isBreakable) invoker.call(0x2FA133A4A9D37ED8, vehicle, doorId, isBreakable) end,
	---  
	IS_VEHICLE_BUMPER_BOUNCING = function(vehicle, frontBumper) return invoker.call(0x27B926779DEB502D, vehicle, frontBumper).bool end,
	---  
	IS_VEHICLE_BUMPER_BROKEN_OFF = function(vehicle, frontBumper) return invoker.call(0x468056A6BB6F3846, vehicle, frontBumper).bool end,
	---Usage:  
	---  
	---public bool isCopInRange(Vector3 Location, float Range)  
	---        {  
	---            return Function.Call<bool>(Hash.IS_COP_PED_IN_AREA_3D, Location.X - Range, Location.Y - Range, Location.Z - Range, Location.X + Range, Location.Y + Range, Location.Z + Range);  
	---        }  
	IS_COP_VEHICLE_IN_AREA_3D = function(x1, x2, y1, y2, z1, z2) return invoker.call(0x7EEF65D5F153E26A, x1, x2, y1, y2, z1, z2).bool end,
	--- Public Function isVehicleOnAllWheels(vh As Vehicle) As Boolean  
	---        Return Native.Function.Call(Of Boolean)(Hash.IS_VEHICLE_ON_ALL_WHEELS, vh)  
	---    End Function  
	---  
	IS_VEHICLE_ON_ALL_WHEELS = function(vehicle) return invoker.call(0xB104CD1BABF302E2, vehicle).bool end,
	---Returns `nMonetaryValue` from handling.meta for specific model.  
	GET_VEHICLE_MODEL_VALUE = function(vehicleModel) return invoker.call(0x5873C14A52D74236, vehicleModel).int end,
	---Full list of vehicles by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/vehicles.json  
	GET_VEHICLE_LAYOUT_HASH = function(vehicle) return invoker.call(0x28D37D4F71AC5C58, vehicle).int end,
	---  
	GET_IN_VEHICLE_CLIPSET_HASH_FOR_SEAT = function(vehicle, p1) return invoker.call(0xA01BC64DD4BFBBAC, vehicle, p1).int end,
	---Makes the train all jumbled up and derailed as it moves on the tracks (though that wont stop it from its normal operations)  
	SET_RENDER_TRAIN_AS_DERAILED = function(train, toggle) invoker.call(0x317B11A312DF5534, train, toggle) end,
	---They use the same color indexs as SET_VEHICLE_COLOURS.  
	SET_VEHICLE_EXTRA_COLOURS = function(vehicle, pearlescentColor, wheelColor) invoker.call(0x2036F561ADD12E33, vehicle, pearlescentColor, wheelColor) end,
	---  
	GET_VEHICLE_EXTRA_COLOURS = function(vehicle, pearlescentColor, wheelColor) invoker.call(0x3BC4245933A166F7, vehicle, pearlescentColor, wheelColor) end,
	---  
	SET_VEHICLE_EXTRA_COLOUR_5 = function(vehicle, color) invoker.call(0xF40DD601A65F7F19, vehicle, color) end,
	---  
	GET_VEHICLE_EXTRA_COLOUR_5 = function(vehicle, color) invoker.call(0x7D1464D472D32136, vehicle, color) end,
	---  
	SET_VEHICLE_EXTRA_COLOUR_6 = function(vehicle, color) invoker.call(0x6089CDF6A57F326C, vehicle, color) end,
	---  
	GET_VEHICLE_EXTRA_COLOUR_6 = function(vehicle, color) invoker.call(0xB7635E80A5C31BFF, vehicle, color) end,
	---  
	STOP_ALL_GARAGE_ACTIVITY = function() invoker.call(0x0F87E938BDF29D66) end,
	---This fixes a vehicle.  
	---If the vehicle's engine's broken then you cannot fix it with this native.  
	SET_VEHICLE_FIXED = function(vehicle) invoker.call(0x115722B1B9C14C1C, vehicle) end,
	---This fixes the deformation of a vehicle but the vehicle health doesn't improve  
	SET_VEHICLE_DEFORMATION_FIXED = function(vehicle) invoker.call(0x953DA1E1B12C0491, vehicle) end,
	---  
	SET_VEHICLE_CAN_ENGINE_MISSFIRE = function(vehicle, toggle) invoker.call(0x206BC5DC9D1AC70A, vehicle, toggle) end,
	---  
	SET_VEHICLE_CAN_LEAK_OIL = function(vehicle, toggle) invoker.call(0x51BB2D88D31A914B, vehicle, toggle) end,
	---  
	SET_VEHICLE_CAN_LEAK_PETROL = function(vehicle, toggle) invoker.call(0x192547247864DFDD, vehicle, toggle) end,
	---  
	SET_DISABLE_VEHICLE_PETROL_TANK_FIRES = function(vehicle, toggle) invoker.call(0x465BF26AB9684352, vehicle, toggle) end,
	---  
	SET_DISABLE_VEHICLE_PETROL_TANK_DAMAGE = function(vehicle, toggle) invoker.call(0x37C8252A7C92D017, vehicle, toggle) end,
	---  
	SET_DISABLE_VEHICLE_ENGINE_FIRES = function(vehicle, toggle) invoker.call(0x91A0BD635321F145, vehicle, toggle) end,
	---  
	SET_VEHICLE_LIMIT_SPEED_WHEN_PLAYER_INACTIVE = function(vehicle, toggle) invoker.call(0xC50CE861B55EAB8B, vehicle, toggle) end,
	---sfink: sets bit in vehicle's structure, used by maintransition, fm_mission_controller, mission_race and a couple of other scripts. see dissassembly:   
	---CVehicle *__fastcall sub_140CDAA10(signed int a1, char a2)  
	---{  
	---    CVehicle *result; // rax@1  
	---  
	---    result = EntityAsCVehicle(a1);  
	---    if ( result )  
	---    {  
	---        result->field_886 &= 0xEFu;  
	---        result->field_886 |= 16 * (a2 & 1);  
	---    }  
	---    return result;  
	---}  
	SET_VEHICLE_STOP_INSTANTLY_WHEN_PLAYER_INACTIVE = function(vehicle, toggle) invoker.call(0x6EBFB22D646FFC18, vehicle, toggle) end,
	---  
	SET_DISABLE_PRETEND_OCCUPANTS = function(vehicle, toggle) invoker.call(0x25367DE49D64CF16, vehicle, toggle) end,
	---  
	REMOVE_VEHICLES_FROM_GENERATORS_IN_AREA = function(x1, y1, z1, x2, y2, z2, p6) invoker.call(0x46A1E1A299EC4BBA, x1, y1, z1, x2, y2, z2, p6) end,
	---Locks the vehicle's steering to the desired angle, explained below.  
	---  
	---Requires to be called onTick. Steering is unlocked the moment the function stops being called on the vehicle.  
	---  
	---Steer bias:  
	----1.0 = full right  
	---0.0 = centered steering  
	---1.0 = full left  
	SET_VEHICLE_STEER_BIAS = function(vehicle, value) invoker.call(0x42A8EC77D5150CBE, vehicle, value) end,
	---  
	IS_VEHICLE_EXTRA_TURNED_ON = function(vehicle, extraId) return invoker.call(0xD2E6822DBFD6C8BD, vehicle, extraId).bool end,
	---Available extraIds are 1-14, however none of the vehicles have extras above 12.  
	SET_VEHICLE_EXTRA = function(vehicle, extraId, disable) invoker.call(0x7EE3A3C5E4A40CC9, vehicle, extraId, disable) end,
	---Checks via CVehicleModelInfo  
	DOES_EXTRA_EXIST = function(vehicle, extraId) return invoker.call(0x1262D55792428154, vehicle, extraId).bool end,
	---Returns true if specified extra part is broken off. It only works for extras that can break off during collisions, non-breakable extras always return false. Also returns true if the breakable extra is toggled off through script.  
	IS_EXTRA_BROKEN_OFF = function(vehicle, extraId) return invoker.call(0x534E36D4DB9ECC5D, vehicle, extraId).bool end,
	---  
	SET_CONVERTIBLE_ROOF = function(vehicle, p1) invoker.call(0xF39C4F538B5124C2, vehicle, p1) end,
	---  
	LOWER_CONVERTIBLE_ROOF = function(vehicle, instantlyLower) invoker.call(0xDED51F703D0FA83D, vehicle, instantlyLower) end,
	---  
	RAISE_CONVERTIBLE_ROOF = function(vehicle, instantlyRaise) invoker.call(0x8F5FB35D7E88FC70, vehicle, instantlyRaise) end,
	---0 -> up  
	---1 -> lowering down  
	---2 -> down  
	---3 -> raising up  
	GET_CONVERTIBLE_ROOF_STATE = function(vehicle) return invoker.call(0xF8C397922FC03F41, vehicle).int end,
	---Returns true if the vehicle has a convertible roof.  
	---  
	---p1 is false almost always. However, in launcher_carwash/carwash1/carwash2 scripts, p1 is true and is accompanied by DOES_VEHICLE_HAVE_ROOF. If p1 is true, it seems that every single vehicle will return true irrespective of being a convertible.  
	IS_VEHICLE_A_CONVERTIBLE = function(vehicle, p1) return invoker.call(0x52F357A30698BCCE, vehicle, p1).bool end,
	---Transforms the `stormberg`/`toreador` to its "submarine" variant. If the vehicle is already in that state then the vehicle transformation audio will still play, but the vehicle won't change at all.  
	TRANSFORM_TO_SUBMARINE = function(vehicle, noAnimation) return invoker.call(0xBE4C854FFDB6EEBE, vehicle, noAnimation).bool end,
	---Transforms the `stormberg`/`toreador` to its "road vehicle" variant. If the vehicle is already in that state then the vehicle transformation audio will still play, but the vehicle won't change at all.  
	TRANSFORM_TO_CAR = function(vehicle, noAnimation) invoker.call(0x2A69FFD1B42BFF9E, vehicle, noAnimation) end,
	---  
	IS_VEHICLE_IN_SUBMARINE_MODE = function(vehicle) return invoker.call(0xA77DC70BD689A1E5, vehicle).bool end,
	---  
	IS_VEHICLE_STOPPED_AT_TRAFFIC_LIGHTS = function(vehicle) return invoker.call(0x2959F696AE390A99, vehicle).bool end,
	---Apply damage to vehicle at a location. Location is relative to vehicle model (not world).  
	---  
	---Radius of effect damage applied in a sphere at impact location  
	---When `focusOnModel` set to `true`, the damage sphere will travel towards the vehicle from the given point, thus guaranteeing an impact  
	SET_VEHICLE_DAMAGE = function(vehicle, xOffset, yOffset, zOffset, damage, radius, focusOnModel) invoker.call(0xA1DD317EA8FD4F29, vehicle, xOffset, yOffset, zOffset, damage, radius, focusOnModel) end,
	---  
	SET_VEHICLE_OCCUPANTS_TAKE_EXPLOSIVE_DAMAGE = function(vehicle, toggle) invoker.call(0x35BB21DE06784373, vehicle, toggle) end,
	---Returns 1000.0 if the function is unable to get the address of the specified vehicle or if it's not a vehicle.  
	---  
	---Minimum: -4000  
	---Maximum: 1000  
	---  
	----4000: Engine is destroyed  
	---0 and below: Engine catches fire and health rapidly declines  
	---300: Engine is smoking and losing functionality  
	---1000: Engine is perfect  
	GET_VEHICLE_ENGINE_HEALTH = function(vehicle) return invoker.call(0xC45D23BAF168AAB8, vehicle).float end,
	---1000 is max health  
	---Begins leaking gas at around 650 health  
	---Minimum: -4000  
	---Maximum: 1000  
	---  
	----4000: Engine is destroyed  
	---0 and below: Engine catches fire and health rapidly declines  
	---300: Engine is smoking and losing functionality  
	---1000: Engine is perfect  
	SET_VEHICLE_ENGINE_HEALTH = function(vehicle, health) invoker.call(0x45F6D8EEF34ABEF1, vehicle, health) end,
	---Works just like SET_VEHICLE_ENGINE_HEALTH, but only for planes.  
	SET_PLANE_ENGINE_HEALTH = function(vehicle, health) invoker.call(0x2A86A0475B6A1434, vehicle, health) end,
	---1000 is max health  
	---Begins leaking gas at around 650 health  
	----999.90002441406 appears to be minimum health, although nothing special occurs  
	GET_VEHICLE_PETROL_TANK_HEALTH = function(vehicle) return invoker.call(0x7D5DABE888D2D074, vehicle).float end,
	---1000 is max health  
	---Begins leaking gas at around 650 health  
	----999.90002441406 appears to be minimum health, although nothing special occurs  
	SET_VEHICLE_PETROL_TANK_HEALTH = function(vehicle, health) invoker.call(0x70DB57649FA8D0D8, vehicle, health) end,
	---p1 can be anywhere from 0 to 3 in the scripts.  
	---p2 being how long in milliseconds the vehicle has been stuck  
	IS_VEHICLE_STUCK_TIMER_UP = function(vehicle, p1, ms) return invoker.call(0x679BE1DAF71DA874, vehicle, p1, ms).bool end,
	---The inner function has a switch on the second parameter. It's the stuck timer index.  
	---  
	---Here's some pseudo code I wrote for the inner function:  
	---void __fastcall NATIVE_RESET_VEHICLE_STUCK_TIMER_INNER(CUnknown* unknownClassInVehicle, int timerIndex)  
	---{  
	--- switch (timerIndex)  
	---   {  
	--- case 0:  
	---       unknownClassInVehicle->FirstStuckTimer = (WORD)0u;  
	--- case 1:  
	---       unknownClassInVehicle->SecondStuckTimer = (WORD)0u;  
	---    case 2:  
	---       unknownClassInVehicle->ThirdStuckTimer = (WORD)0u;  
	--- case 3:  
	---       unknownClassInVehicle->FourthStuckTimer = (WORD)0u;  
	---    case 4:  
	---       unknownClassInVehicle->FirstStuckTimer = (WORD)0u;  
	---     unknownClassInVehicle->SecondStuckTimer = (WORD)0u;  
	---        unknownClassInVehicle->ThirdStuckTimer = (WORD)0u;  
	---     unknownClassInVehicle->FourthStuckTimer = (WORD)0u;  
	---        break;  
	---    };  
	---}  
	RESET_VEHICLE_STUCK_TIMER = function(vehicle, nullAttributes) invoker.call(0xD7591B0065AFAA7A, vehicle, nullAttributes) end,
	---p1 is always 0 in the scripts.  
	---  
	---p1 = check if vehicle is on fire  
	IS_VEHICLE_DRIVEABLE = function(vehicle, isOnFireCheck) return invoker.call(0x4C241E39B23DF959, vehicle, isOnFireCheck).bool end,
	---  
	SET_VEHICLE_HAS_BEEN_OWNED_BY_PLAYER = function(vehicle, owned) invoker.call(0x2B5F9D2AF1F1722D, vehicle, owned) end,
	---  
	SET_VEHICLE_NEEDS_TO_BE_HOTWIRED = function(vehicle, toggle) invoker.call(0xFBA550EA44404EE6, vehicle, toggle) end,
	---  
	SET_VEHICLE_BLIP_THROTTLE_RANDOMLY = function(vehicle, p1) invoker.call(0x9F3F689B814F2599, vehicle, p1) end,
	---  
	SET_POLICE_FOCUS_WILL_TRACK_VEHICLE = function(vehicle, toggle) invoker.call(0x4E74E62E0A97E901, vehicle, toggle) end,
	---Sounds the horn for the specified vehicle.  
	---  
	---vehicle: The vehicle to activate the horn for.  
	---mode: The hash of "NORMAL" or "HELDDOWN". Can be 0.  
	---duration: The duration to sound the horn, in milliseconds.  
	---  
	---Note: If a player is in the vehicle, it will only sound briefly.  
	START_VEHICLE_HORN = function(vehicle, duration, mode, forever) invoker.call(0x9C8C6504B5B63D2C, vehicle, duration, mode, forever) end,
	---If set to TRUE, it seems to suppress door noises and doesn't allow the horn to be continuous.  
	SET_VEHICLE_IN_CAR_MOD_SHOP = function(vehicle, toggle) invoker.call(0x9D44FCCE98450843, vehicle, toggle) end,
	---if true, axles won't bend.  
	SET_VEHICLE_HAS_STRONG_AXLES = function(vehicle, toggle) invoker.call(0x92F0CF722BC4202F, vehicle, toggle) end,
	---Returns model name of vehicle in all caps. Needs to be displayed through localizing text natives to get proper display name.  
	--------------------------------------------------------------------------------------------------------------------------------------------  
	---While often the case, this does not simply return the model name of the vehicle (which could be hashed to return the model hash). Variations of the same vehicle may also use the same display name.  
	--------------------------------------------------------------------------------------------------------------------------------------------  
	---  
	---Returns "CARNOTFOUND" if the hash doesn't match a vehicle hash.  
	---  
	---Using HUD::GET_FILENAME_FOR_AUDIO_CONVERSATION, you can get the localized name.  
	---  
	---Full list of vehicles by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/vehicles.json  
	GET_DISPLAY_NAME_FROM_VEHICLE_MODEL = function(modelHash) return invoker.call(0xB215AAC32D25D019, modelHash).str end,
	---Will return a vehicle's manufacturer display label.  
	---Returns "CARNOTFOUND" if the hash doesn't match a vehicle hash.  
	---  
	---Full list of vehicles by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/vehicles.json  
	GET_MAKE_NAME_FROM_VEHICLE_MODEL = function(modelHash) return invoker.call(0xF7AF4F159FF99F97, modelHash).str end,
	---The only example I can find of this function in the scripts, is this:  
	---  
	---struct _s = VEHICLE::GET_VEHICLE_DEFORMATION_AT_POS(rPtr((A_0) + 4), 1.21f, 6.15f, 0.3f);  
	---  
	--------------------------------------------------------------------------------------------------------------------------------------------  
	---PC scripts:  
	---  
	---v_5/*{3}*/ = VEHICLE::GET_VEHICLE_DEFORMATION_AT_POS(a_0._f1, 1.21, 6.15, 0.3);  
	GET_VEHICLE_DEFORMATION_AT_POS = function(vehicle, offsetX, offsetY, offsetZ) return invoker.call(0x4EC6CFBC7B2E9536, vehicle, offsetX, offsetY, offsetZ).scr_vec3 end,
	---  
	SET_VEHICLE_LIVERY = function(vehicle, livery) invoker.call(0x60BF608F1B8CD1B6, vehicle, livery) end,
	----1 = no livery  
	GET_VEHICLE_LIVERY = function(vehicle) return invoker.call(0x2BB9230590DA5E8A, vehicle).int end,
	---Returns -1 if the vehicle has no livery  
	GET_VEHICLE_LIVERY_COUNT = function(vehicle) return invoker.call(0x87B63E25A529D526, vehicle).int end,
	---Used to set the secondary livery (the roof on Tornado Custom being one such example.)  
	---  
	---Livery value is dependent on the amount of liveries present in the vehicle's texture dictionary, for Tornado Custom this would be 0-6.  
	SET_VEHICLE_LIVERY2 = function(vehicle, livery) invoker.call(0xA6D3A8750DC73270, vehicle, livery) end,
	---Returns index of the current vehicle's secondary livery. A getter for SET_VEHICLE_LIVERY2.  
	GET_VEHICLE_LIVERY2 = function(vehicle) return invoker.call(0x60190048C0764A26, vehicle).int end,
	---Returns a number of available secondary liveries, or -1 if vehicle has no secondary liveries available.  
	GET_VEHICLE_LIVERY2_COUNT = function(vehicle) return invoker.call(0x5ECB40269053C0D4, vehicle).int end,
	---This will return false if the window is broken, or rolled down.  
	---Window indexes:  
	---0 = Front Right Window  
	---1 = Front Left Window  
	---2 = Back Right Window  
	---3 = Back Left Window  
	---  
	---  
	---Those numbers go on for vehicles that have more than 4 doors with windows.  
	IS_VEHICLE_WINDOW_INTACT = function(vehicle, windowIndex) return invoker.call(0x46E571A0E20D01F1, vehicle, windowIndex).bool end,
	---Appears to return false if any window is broken.  
	ARE_ALL_VEHICLE_WINDOWS_INTACT = function(vehicle) return invoker.call(0x11D862A3E977A9EF, vehicle).bool end,
	---Returns false if every seat is occupied.  
	ARE_ANY_VEHICLE_SEATS_FREE = function(vehicle) return invoker.call(0x2D34FC3BC4ADB780, vehicle).bool end,
	---  
	RESET_VEHICLE_WHEELS = function(vehicle, toggle) invoker.call(0x21D2E5662C1F6FED, vehicle, toggle) end,
	---  
	IS_HELI_PART_BROKEN = function(vehicle, p1, p2, p3) return invoker.call(0xBC74B4BE25EB6C8A, vehicle, p1, p2, p3).bool end,
	---Max 1000.  
	---At 0 the main rotor will stall.  
	GET_HELI_MAIN_ROTOR_HEALTH = function(vehicle) return invoker.call(0xE4CB7541F413D2C5, vehicle).float end,
	---Max 1000.  
	---At 0 the tail rotor will stall.  
	GET_HELI_TAIL_ROTOR_HEALTH = function(vehicle) return invoker.call(0xAE8CE82A4219AC8C, vehicle).float end,
	---Max 1000.  
	---At -100 both helicopter rotors will stall.  
	GET_HELI_TAIL_BOOM_HEALTH = function(vehicle) return invoker.call(0xAC51915D27E4A5F7, vehicle).float end,
	---  
	SET_HELI_MAIN_ROTOR_HEALTH = function(vehicle, health) invoker.call(0x4056EA1105F5ABD7, vehicle, health) end,
	---  
	SET_HELI_TAIL_ROTOR_HEALTH = function(vehicle, health) invoker.call(0xFE205F38AAA58E5B, vehicle, health) end,
	---  
	SET_HELI_TAIL_BOOM_CAN_BREAK_OFF = function(vehicle, toggle) return invoker.call(0x3EC8BF18AA453FE9, vehicle, toggle).bool end,
	---NOTE: Debugging functions are not present in the retail version of the game.  
	SET_VEHICLE_NAME_DEBUG = function(vehicle, name) invoker.call(0xBFDF984E2C22B94F, vehicle, name) end,
	---Sets a vehicle to be strongly resistant to explosions. p0 is the vehicle; set p1 to false to toggle the effect on/off.  
	SET_VEHICLE_EXPLODES_ON_HIGH_EXPLOSION_DAMAGE = function(vehicle, toggle) invoker.call(0x71B0892EC081D60A, vehicle, toggle) end,
	---  
	SET_VEHICLE_EXPLODES_ON_EXPLOSION_DAMAGE_AT_ZERO_BODY_HEALTH = function(vehicle, toggle) invoker.call(0xD565F438137F0E10, vehicle, toggle) end,
	---  
	SET_ALLOW_VEHICLE_EXPLODES_ON_CONTACT = function(vehicle, toggle) invoker.call(0x3441CAD2F2231923, vehicle, toggle) end,
	---  
	SET_VEHICLE_DISABLE_TOWING = function(vehicle, toggle) invoker.call(0x2B6747FAA9DB9D6B, vehicle, toggle) end,
	---  
	GET_VEHICLE_HAS_LANDING_GEAR = function(vehicle) return invoker.call(0xE43701C36CAFF1A4, vehicle).bool end,
	---Works for vehicles with a retractable landing gear  
	---  
	---Landing gear states:  
	---  
	---0: Deployed  
	---1: Closing  
	---2: Opening  
	---3: Retracted  
	CONTROL_LANDING_GEAR = function(vehicle, state) invoker.call(0xCFC8BE9A5E1FE575, vehicle, state) end,
	---Landing gear states:  
	---  
	---0: Deployed  
	---1: Closing (Retracting)  
	---2: (Landing gear state 2 is never used.)  
	---3: Opening (Deploying)  
	---4: Retracted  
	---  
	---Returns the current state of the vehicles landing gear.  
	GET_LANDING_GEAR_STATE = function(vehicle) return invoker.call(0x9B0F3DCA3DB0F4CD, vehicle).int end,
	---  
	IS_ANY_VEHICLE_NEAR_POINT = function(x, y, z, radius) return invoker.call(0x61E1DD6125A3EEE6, x, y, z, radius).bool end,
	---  
	REQUEST_VEHICLE_HIGH_DETAIL_MODEL = function(vehicle) invoker.call(0xA6E9FDCB2C76785E, vehicle) end,
	---  
	_GET_VEHICLE_MODEL_NUM_DRIVE_GEARS = function(vehicleModel) return invoker.call(0x61F02E4E9A7A61EA, vehicleModel).int end,
	---  
	_GET_VEHICLE_MAX_DRIVE_GEAR_COUNT = function(vehicle) return invoker.call(0x24910C3D66BA770D, vehicle).int end,
	---  
	_GET_IS_VEHICLE_ELECTRIC = function(vehicleModel) return invoker.call(0x1FCB07FE230B6639, vehicleModel).bool end,
	---Returns the vehicle's drivetrain type.  
	---  
	---enum eVehicleDrivetrainType  
	---{  
	---	VehicleDrivetrainType_INVALID,  
	---	VehicleDrivetrainType_FWD,  
	---	VehicleDrivetrainType_RWD,  
	---	VehicleDrivetrainType_AWD  
	---};  
	---  
	---_GET_VEHICLE_DE* - _GET_VEHICLE_DI*  
	_GET_VEHICLE_DRIVETRAIN_TYPE = function(vehicleModel) return invoker.call(0x1423725069EE1D14, vehicleModel).int end,
	---  
	_GET_VEHICLE_CURRENT_DRIVE_GEAR = function(vehicle) return invoker.call(0x56185A25D45A0DCD, vehicle).int end,
	---  
	_GET_VEHICLE_CURRENT_REV_RATIO = function(vehicle) return invoker.call(0xF9DDA40BC293A61E, vehicle).float end,
	---  
	REMOVE_VEHICLE_HIGH_DETAIL_MODEL = function(vehicle) invoker.call(0x00689CDE5F7C6787, vehicle) end,
	---  
	IS_VEHICLE_HIGH_DETAIL = function(vehicle) return invoker.call(0x1F25887F3C104278, vehicle).bool end,
	---REQUEST_VEHICLE_ASSET(GET_HASH_KEY(cargobob3), 3);  
	---  
	---vehicle found that have asset's:  
	---cargobob3  
	---submersible  
	---blazer  
	REQUEST_VEHICLE_ASSET = function(vehicleHash, vehicleAsset) invoker.call(0x81A15811460FAB3A, vehicleHash, vehicleAsset) end,
	---  
	HAS_VEHICLE_ASSET_LOADED = function(vehicleAsset) return invoker.call(0x1BBE0523B8DB9A21, vehicleAsset).bool end,
	---  
	REMOVE_VEHICLE_ASSET = function(vehicleAsset) invoker.call(0xACE699C71AB9DEB5, vehicleAsset) end,
	---Sets how much the crane on the tow truck is raised, where 0.0 is fully lowered and 1.0 is fully raised.  
	SET_VEHICLE_TOW_TRUCK_ARM_POSITION = function(vehicle, position) invoker.call(0xFE54B92A344583CA, vehicle, position) end,
	---  
	_SET_ATTACHED_VEHICLE_TO_TOW_TRUCK_ARM = function(towTruck, vehicle) invoker.call(0x48BD57D0DD17786A, towTruck, vehicle) end,
	---HookOffset defines where the hook is attached. leave at 0 for default attachment.  
	ATTACH_VEHICLE_TO_TOW_TRUCK = function(towTruck, vehicle, rear, hookOffsetX, hookOffsetY, hookOffsetZ) invoker.call(0x29A16F8D621C4508, towTruck, vehicle, rear, hookOffsetX, hookOffsetY, hookOffsetZ) end,
	---First two parameters swapped. Scripts verify that towTruck is the first parameter, not the second.  
	DETACH_VEHICLE_FROM_TOW_TRUCK = function(towTruck, vehicle) invoker.call(0xC2DB6B6708350ED8, towTruck, vehicle) end,
	---  
	DETACH_VEHICLE_FROM_ANY_TOW_TRUCK = function(vehicle) return invoker.call(0xD0E9CE05A1E68CD8, vehicle).bool end,
	---Scripts verify that towTruck is the first parameter, not the second.  
	IS_VEHICLE_ATTACHED_TO_TOW_TRUCK = function(towTruck, vehicle) return invoker.call(0x146DF9EC4C4B9FD4, towTruck, vehicle).bool end,
	---  
	GET_ENTITY_ATTACHED_TO_TOW_TRUCK = function(towTruck) return invoker.call(0xEFEA18DCF10F8F75, towTruck).int end,
	---  
	SET_VEHICLE_AUTOMATICALLY_ATTACHES = function(vehicle, p1, p2) return invoker.call(0x8BA6F76BC53A1493, vehicle, p1, p2).int end,
	---Sets the arm position of a bulldozer. Position must be a value between 0.0 and 1.0. Ignored when `p2` is set to false, instead incrementing arm position by 0.1 (or 10%).  
	SET_VEHICLE_BULLDOZER_ARM_POSITION = function(vehicle, position, p2) invoker.call(0xF8EBCCC96ADB9FB7, vehicle, position, p2) end,
	---  
	SET_VEHICLE_TANK_TURRET_POSITION = function(vehicle, position, p2) invoker.call(0x56B94C6D7127DFBA, vehicle, position, p2) end,
	---  
	SET_VEHICLE_TURRET_TARGET = function(vehicle, p1, x, y, z, p5) invoker.call(0x0581730AB9380412, vehicle, p1, x, y, z, p5) end,
	---  
	SET_VEHICLE_TANK_STATIONARY = function(vehicle, p1) invoker.call(0x737E398138550FFF, vehicle, p1) end,
	---  
	SET_VEHICLE_TURRET_SPEED_THIS_FRAME = function(vehicle, speed) invoker.call(0x1093408B4B9D1146, vehicle, speed) end,
	---  
	DISABLE_VEHICLE_TURRET_MOVEMENT_THIS_FRAME = function(vehicle) invoker.call(0x32CAEDF24A583345, vehicle) end,
	---  
	SET_VEHICLE_FLIGHT_NOZZLE_POSITION = function(vehicle, angleRatio) invoker.call(0x30D779DE7C4F6DD3, vehicle, angleRatio) end,
	---  
	SET_VEHICLE_FLIGHT_NOZZLE_POSITION_IMMEDIATE = function(vehicle, angle) invoker.call(0x9AA47FFF660CB932, vehicle, angle) end,
	---  
	GET_VEHICLE_FLIGHT_NOZZLE_POSITION = function(plane) return invoker.call(0xDA62027C8BDB326E, plane).float end,
	---True stops vtols from switching modes. Doesn't stop the sound though.  
	SET_DISABLE_VERTICAL_FLIGHT_MODE_TRANSITION = function(vehicle, toggle) invoker.call(0xCE2B43770B655F8F, vehicle, toggle) end,
	---  
	GENERATE_VEHICLE_CREATION_POS_FROM_PATHS = function(outVec, p1, outVec1, p3, p4, p5, p6, p7, p8) return invoker.call(0xA4822F1CF23F4810, outVec, p1, outVec1, p3, p4, p5, p6, p7, p8).bool end,
	---On accelerating, spins the driven wheels with the others braked, so you don't go anywhere.  
	SET_VEHICLE_BURNOUT = function(vehicle, toggle) invoker.call(0xFB8794444A7D60FB, vehicle, toggle) end,
	---Returns whether the specified vehicle is currently in a burnout.  
	---  
	---  
	---vb.net  
	---Public Function isVehicleInBurnout(vh As Vehicle) As Boolean  
	---        Return Native.Function.Call(Of Boolean)(Hash.IS_VEHICLE_IN_BURNOUT, vh)  
	---    End Function  
	IS_VEHICLE_IN_BURNOUT = function(vehicle) return invoker.call(0x1297A88E081430EB, vehicle).bool end,
	---Reduces grip significantly so it's hard to go anywhere.  
	SET_VEHICLE_REDUCE_GRIP = function(vehicle, toggle) invoker.call(0x222FF6A823D122E2, vehicle, toggle) end,
	---val is 0-3  
	---Often used in conjunction with: SET_VEHICLE_REDUCE_GRIP  
	SET_VEHICLE_REDUCE_GRIP_LEVEL = function(vehicle, val) invoker.call(0x6DEE944E1EE90CFB, vehicle, val) end,
	---Sets the turn signal enabled for a vehicle.  
	---Set turnSignal to 1 for left light, 0 for right light.  
	SET_VEHICLE_INDICATOR_LIGHTS = function(vehicle, turnSignal, toggle) invoker.call(0xB5D45264751B7DF0, vehicle, turnSignal, toggle) end,
	---  
	SET_VEHICLE_BRAKE_LIGHTS = function(vehicle, toggle) invoker.call(0x92B35082E0B42F66, vehicle, toggle) end,
	---  
	SET_VEHICLE_TAIL_LIGHTS = function(vehicle, toggle) invoker.call(0x5815BD2763178DF4, vehicle, toggle) end,
	---  
	SET_VEHICLE_HANDBRAKE = function(vehicle, toggle) invoker.call(0x684785568EF26A22, vehicle, toggle) end,
	---  
	SET_VEHICLE_BRAKE = function(vehicle, toggle) invoker.call(0xE4E2FD323574965C, vehicle, toggle) end,
	---  
	INSTANTLY_FILL_VEHICLE_POPULATION = function() invoker.call(0x48ADC8A773564670) end,
	---  
	HAS_INSTANT_FILL_VEHICLE_POPULATION_FINISHED = function() return invoker.call(0x91D6DD290888CBAB).bool end,
	---  
	NETWORK_ENABLE_EMPTY_CROWDING_VEHICLES_REMOVAL = function(toggle) invoker.call(0x51DB102F4A3BA5E0, toggle) end,
	---Default:1000||This sets a value which is used when NETWORK_ENABLE_EMPTY_CROWDING_VEHICLES_REMOVAL(true) is called each frame.  
	NETWORK_CAP_EMPTY_CROWDING_VEHICLES_REMOVAL = function(p0) invoker.call(0xA4A9A4C40E615885, p0) end,
	---Gets the trailer of a vehicle and puts it into the trailer parameter.  
	GET_VEHICLE_TRAILER_VEHICLE = function(vehicle, trailer) return invoker.call(0x1CDD6BADC297830D, vehicle, trailer).bool end,
	---  
	_GET_VEHICLE_TRAILER_PARENT_VEHICLE = function(trailer) return invoker.call(0x80D9D32636369C92, trailer).int end,
	---vehicle must be a plane  
	SET_VEHICLE_USES_LARGE_REAR_RAMP = function(vehicle, toggle) invoker.call(0xCAC66558B944DA67, vehicle, toggle) end,
	---  
	SET_VEHICLE_RUDDER_BROKEN = function(vehicle, toggle) invoker.call(0x09606148B6C71DEF, vehicle, toggle) end,
	---  
	SET_CONVERTIBLE_ROOF_LATCH_STATE = function(vehicle, state) invoker.call(0x1A78AD3D8240536F, vehicle, state) end,
	---  
	GET_VEHICLE_ESTIMATED_MAX_SPEED = function(vehicle) return invoker.call(0x53AF99BAA671CA47, vehicle).float end,
	---  
	GET_VEHICLE_MAX_BRAKING = function(vehicle) return invoker.call(0xAD7E85FC227197C4, vehicle).float end,
	---  
	GET_VEHICLE_MAX_TRACTION = function(vehicle) return invoker.call(0xA132FB5370554DB0, vehicle).float end,
	---static - max acceleration  
	GET_VEHICLE_ACCELERATION = function(vehicle) return invoker.call(0x5DD35C8D074E57AE, vehicle).float end,
	---Returns max speed (without mods) of the specified vehicle model in m/s.  
	---  
	---Full list of vehicles by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/vehicles.json  
	GET_VEHICLE_MODEL_ESTIMATED_MAX_SPEED = function(modelHash) return invoker.call(0xF417C2502FFFED43, modelHash).float end,
	---Returns max braking of the specified vehicle model.  
	---  
	---Full list of vehicles by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/vehicles.json  
	GET_VEHICLE_MODEL_MAX_BRAKING = function(modelHash) return invoker.call(0xDC53FD41B4ED944C, modelHash).float end,
	---Full list of vehicles by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/vehicles.json  
	GET_VEHICLE_MODEL_MAX_BRAKING_MAX_MODS = function(modelHash) return invoker.call(0xBFBA3BA79CFF7EBF, modelHash).float end,
	---Returns max traction of the specified vehicle model.  
	---  
	---Full list of vehicles by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/vehicles.json  
	GET_VEHICLE_MODEL_MAX_TRACTION = function(modelHash) return invoker.call(0x539DE94D44FDFD0D, modelHash).float end,
	---Returns the acceleration of the specified model.  
	---  
	---Full list of vehicles by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/vehicles.json  
	GET_VEHICLE_MODEL_ACCELERATION = function(modelHash) return invoker.call(0x8C044C5C84505B6A, modelHash).float end,
	---9.8 * thrust if air vehicle, else 0.38 + drive force?  
	---  
	---Full list of vehicles by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/vehicles.json  
	GET_VEHICLE_MODEL_ACCELERATION_MAX_MODS = function(modelHash) return invoker.call(0x53409B5163D5B846, modelHash).float end,
	---Full list of vehicles by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/vehicles.json  
	GET_FLYING_VEHICLE_MODEL_AGILITY = function(modelHash) return invoker.call(0xC6AD107DDC9054CC, modelHash).float end,
	---Full list of vehicles by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/vehicles.json  
	GET_BOAT_VEHICLE_MODEL_AGILITY = function(modelHash) return invoker.call(0x5AA3F878A178C4FC, modelHash).float end,
	---  
	GET_VEHICLE_CLASS_ESTIMATED_MAX_SPEED = function(vehicleClass) return invoker.call(0x00C09F246ABEDD82, vehicleClass).float end,
	---  
	GET_VEHICLE_CLASS_MAX_TRACTION = function(vehicleClass) return invoker.call(0xDBC86D85C5059461, vehicleClass).float end,
	---  
	GET_VEHICLE_CLASS_MAX_AGILITY = function(vehicleClass) return invoker.call(0x4F930AD022D6DE3B, vehicleClass).float end,
	---  
	GET_VEHICLE_CLASS_MAX_ACCELERATION = function(vehicleClass) return invoker.call(0x2F83E7E45D9EA7AE, vehicleClass).float end,
	---  
	GET_VEHICLE_CLASS_MAX_BRAKING = function(vehicleClass) return invoker.call(0x4BF54C16EC8FEC03, vehicleClass).float end,
	---  
	ADD_ROAD_NODE_SPEED_ZONE = function(x, y, z, radius, speed, p5) return invoker.call(0x2CE544C68FB812A0, x, y, z, radius, speed, p5).int end,
	---  
	REMOVE_ROAD_NODE_SPEED_ZONE = function(speedzone) return invoker.call(0x1033371FC8E842A7, speedzone).bool end,
	---  
	OPEN_BOMB_BAY_DOORS = function(vehicle) invoker.call(0x87E7F24270732CB1, vehicle) end,
	---  
	CLOSE_BOMB_BAY_DOORS = function(vehicle) invoker.call(0x3556041742A0DC74, vehicle) end,
	---Returns true when the bomb bay doors of this plane are open. False if they're closed.  
	GET_ARE_BOMB_BAY_DOORS_OPEN = function(aircraft) return invoker.call(0xD0917A423314BBA8, aircraft).bool end,
	---Possibly: Returns whether the searchlight (found on police vehicles) is toggled on.  
	---  
	---@Author Nac  
	IS_VEHICLE_SEARCHLIGHT_ON = function(vehicle) return invoker.call(0xC0F97FCE55094987, vehicle).bool end,
	---Only works during nighttime.  
	SET_VEHICLE_SEARCHLIGHT = function(heli, toggle, canBeUsedByAI) invoker.call(0x14E85C5EE7A4D542, heli, toggle, canBeUsedByAI) end,
	---  
	DOES_VEHICLE_HAVE_SEARCHLIGHT = function(vehicle) return invoker.call(0x99015ED7DBEA5113, vehicle).bool end,
	---Check if a vehicle seat is accessible. If you park your vehicle near a wall and the ped cannot enter/exit this side, the return value toggles from true (not blocked) to false (blocked).  
	---  
	---seatIndex  = -1 being the driver seat.  
	---Use GET_VEHICLE_MAX_NUMBER_OF_PASSENGERS(vehicle) - 1 for last seat index.  
	---side = only relevant for bikes/motorcycles to check if the left (false)/right (true) side is blocked.  
	---onEnter = check if you can enter (true) or exit (false) a vehicle.  
	IS_ENTRY_POINT_FOR_SEAT_CLEAR = function(ped, vehicle, seatIndex, side, onEnter) return invoker.call(0x639431E895B9AA57, ped, vehicle, seatIndex, side, onEnter).bool end,
	---doorId: see SET_VEHICLE_DOOR_SHUT  
	GET_ENTRY_POINT_POSITION = function(vehicle, doorId) return invoker.call(0xC0572928C0ABFDA3, vehicle, doorId).scr_vec3 end,
	---  
	CAN_SHUFFLE_SEAT = function(vehicle, seatIndex) return invoker.call(0x30785D90C956BF35, vehicle, seatIndex).bool end,
	---  
	GET_NUM_MOD_KITS = function(vehicle) return invoker.call(0x33F2E3FE70EAAE1D, vehicle).int end,
	---Set modKit to 0 if you plan to call SET_VEHICLE_MOD. That's what the game does. Most body modifications through SET_VEHICLE_MOD will not take effect until this is set to 0.  
	---  
	---Full list of vehicle mod kits and mods by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/vehicleModKits.json  
	SET_VEHICLE_MOD_KIT = function(vehicle, modKit) invoker.call(0x1F2AA07F00B3217A, vehicle, modKit) end,
	---  
	GET_VEHICLE_MOD_KIT = function(vehicle) return invoker.call(0x6325D1A044AE510D, vehicle).int end,
	---  
	GET_VEHICLE_MOD_KIT_TYPE = function(vehicle) return invoker.call(0xFC058F5121E54C32, vehicle).int end,
	---Returns an int  
	---  
	---Wheel Types:  
	---0: Sport  
	---1: Muscle  
	---2: Lowrider  
	---3: SUV  
	---4: Offroad  
	---5: Tuner  
	---6: Bike Wheels  
	---7: High End  
	---8: Benny's Originals  
	---9: Benny's Bespoke  
	---10: Racing  
	---11: Street  
	---12: Track  
	---  
	---Tested in Los Santos Customs  
	GET_VEHICLE_WHEEL_TYPE = function(vehicle) return invoker.call(0xB3ED1BFB4BE636DC, vehicle).int end,
	---0: Sport  
	---1: Muscle  
	---2: Lowrider  
	---3: SUV  
	---4: Offroad  
	---5: Tuner  
	---6: Bike Wheels  
	---7: High End  
	---8: Benny's Originals  
	---9: Benny's Bespoke  
	---10: Racing  
	---11: Street  
	---12: Track  
	SET_VEHICLE_WHEEL_TYPE = function(vehicle, WheelType) invoker.call(0x487EB21CC7295BA1, vehicle, WheelType) end,
	---paintType:  
	---0: Normal  
	---1: Metallic  
	---2: Pearl  
	---3: Matte  
	---4: Metal  
	---5: Chrome  
	---6: Chameleon  
	GET_NUM_MOD_COLORS = function(paintType, p1) return invoker.call(0xA551BE18C11A476D, paintType, p1).int end,
	---paintType:  
	---0: Normal  
	---1: Metallic  
	---2: Pearl  
	---3: Matte  
	---4: Metal  
	---5: Chrome  
	---6: Chameleon  
	---  
	---color: number of the color.  
	---  
	---p3 seems to always be 0.  
	---  
	---Full list of vehicle colors and vehicle plates by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/vehicleColors.json  
	SET_VEHICLE_MOD_COLOR_1 = function(vehicle, paintType, color, pearlescentColor) invoker.call(0x43FEB945EE7F85B8, vehicle, paintType, color, pearlescentColor) end,
	---Changes the secondary paint type and color  
	---paintType:  
	---0: Normal  
	---1: Metallic  
	---2: Pearl  
	---3: Matte  
	---4: Metal  
	---5: Chrome  
	---6: Chameleon  
	---  
	---color: number of the color  
	---  
	---Full list of vehicle colors and vehicle plates by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/vehicleColors.json  
	SET_VEHICLE_MOD_COLOR_2 = function(vehicle, paintType, color) invoker.call(0x816562BADFDEC83E, vehicle, paintType, color) end,
	---  
	GET_VEHICLE_MOD_COLOR_1 = function(vehicle, paintType, color, pearlescentColor) invoker.call(0xE8D65CA700C9A693, vehicle, paintType, color, pearlescentColor) end,
	---  
	GET_VEHICLE_MOD_COLOR_2 = function(vehicle, paintType, color) invoker.call(0x81592BE4E3878728, vehicle, paintType, color) end,
	---Returns a string which is the codename of the vehicle's currently selected primary color  
	---  
	---p1 is always 0  
	GET_VEHICLE_MOD_COLOR_1_NAME = function(vehicle, p1) return invoker.call(0xB45085B721EFD38C, vehicle, p1).str end,
	---Returns a string which is the codename of the vehicle's currently selected secondary color  
	GET_VEHICLE_MOD_COLOR_2_NAME = function(vehicle) return invoker.call(0x4967A516ED23A5A1, vehicle).str end,
	---  
	HAVE_VEHICLE_MODS_STREAMED_IN = function(vehicle) return invoker.call(0x9A83F5F9963775EF, vehicle).bool end,
	---Returns true for any mod part listed in GEN9_EXCLUSIVE_ASSETS_VEHICLES_FILE.  
	IS_VEHICLE_MOD_GEN9_EXCLUSIVE = function(vehicle, modType, modIndex) return invoker.call(0x00834EAC4A96E010, vehicle, modType, modIndex).bool end,
	---In b944, there are 50 (0 - 49) mod types.  
	---  
	---Sets the vehicle mod.  
	---The vehicle must have a mod kit first.  
	---  
	---Any out of range ModIndex is stock.  
	---  
	---#Mod Type  
	---Spoilers - 0  
	---Front Bumper - 1  
	---Rear Bumper - 2  
	---Side Skirt - 3  
	---Exhaust - 4  
	---Frame - 5  
	---Grille - 6  
	---Hood - 7  
	---Fender - 8  
	---Right Fender - 9  
	---Roof - 10  
	---Engine - 11  
	---Brakes - 12  
	---Transmission - 13  
	---Horns - 14 (modIndex from 0 to 51)  
	---Suspension - 15  
	---Armor - 16  
	---Front Wheels - 23  
	---Back Wheels - 24 //only for motocycles  
	---Plate holders - 25  
	---Trim Design - 27  
	---Ornaments - 28  
	---Dial Design - 30  
	---Steering Wheel - 33  
	---Shifter Leavers - 34  
	---Plaques - 35  
	---Hydraulics - 38  
	---Livery - 48  
	---  
	---ENUMS: https://pastebin.com/QzEAn02v  
	SET_VEHICLE_MOD = function(vehicle, modType, modIndex, customTires) invoker.call(0x6AF0636DDEDCB6DD, vehicle, modType, modIndex, customTires) end,
	---In b944, there are 50 (0 - 49) mod types. See SET_VEHICLE_MOD for the list.  
	---  
	---Returns -1 if the vehicle mod is stock  
	GET_VEHICLE_MOD = function(vehicle, modType) return invoker.call(0x772960298DA26FDB, vehicle, modType).int end,
	---Only used for wheels(ModType = 23/24) Returns true if the wheels are custom wheels  
	GET_VEHICLE_MOD_VARIATION = function(vehicle, modType) return invoker.call(0xB3924ECD70E095DC, vehicle, modType).int end,
	---Returns how many possible mods a vehicle has for a given mod type  
	GET_NUM_VEHICLE_MODS = function(vehicle, modType) return invoker.call(0xE38E9162A2500646, vehicle, modType).int end,
	---  
	REMOVE_VEHICLE_MOD = function(vehicle, modType) invoker.call(0x92D619E420858204, vehicle, modType) end,
	---Toggles:  
	---UNK17 - 17  
	---Turbo - 18  
	---UNK19 - 19  
	---Tire Smoke - 20  
	---UNK21 - 21  
	---Xenon Headlights - 22  
	TOGGLE_VEHICLE_MOD = function(vehicle, modType, toggle) invoker.call(0x2A1F4F37F95BAD08, vehicle, modType, toggle) end,
	---  
	IS_TOGGLE_MOD_ON = function(vehicle, modType) return invoker.call(0x84B233A8C8FC8AE7, vehicle, modType).bool end,
	---Returns the text label of a mod type for a given vehicle  
	---  
	---Use GET_FILENAME_FOR_AUDIO_CONVERSATION to get the part name in the game's language  
	GET_MOD_TEXT_LABEL = function(vehicle, modType, modValue) return invoker.call(0x8935624F8C5592CC, vehicle, modType, modValue).str end,
	---Returns the name for the type of vehicle mod(Armour, engine etc)  
	---  
	GET_MOD_SLOT_NAME = function(vehicle, modType) return invoker.call(0x51F0FEB9F6AE98C0, vehicle, modType).str end,
	---Returns the text label of the vehicle's liveryIndex, as specified by the liveryNames section of the vehicle's modkit data in the carcols file.  
	---  
	---example   
	---  
	---int count = VEHICLE::GET_VEHICLE_LIVERY_COUNT(veh);  
	---for (int i = 0; i < count; i++)    
	---  {  
	---     const char* LiveryName = VEHICLE::GET_LIVERY_NAME(veh, i);  
	---  }  
	---  
	---  
	---this example will work fine to fetch all names   
	---for example for Sanchez we get   
	---  
	---SANC_LV1  
	---SANC_LV2  
	---SANC_LV3  
	---SANC_LV4  
	---SANC_LV5  
	---  
	---  
	---Use GET_FILENAME_FOR_AUDIO_CONVERSATION, to get the localized livery name.  
	---  
	---Full list of vehicle mod kits and mods by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/vehicleModKits.json  
	GET_LIVERY_NAME = function(vehicle, liveryIndex) return invoker.call(0xB4C7A93837C91A1F, vehicle, liveryIndex).str end,
	---  
	GET_VEHICLE_MOD_MODIFIER_VALUE = function(vehicle, modType, modIndex) return invoker.call(0x90A38E9838E0A8C1, vehicle, modType, modIndex).int end,
	---Can be used for IS_DLC_VEHICLE_MOD and GET_DLC_VEHICLE_MOD_LOCK_HASH  
	GET_VEHICLE_MOD_IDENTIFIER_HASH = function(vehicle, modType, modIndex) return invoker.call(0x4593CF82AA179706, vehicle, modType, modIndex).int end,
	---  
	PRELOAD_VEHICLE_MOD = function(vehicle, modType, modIndex) invoker.call(0x758F49C24925568A, vehicle, modType, modIndex) end,
	---  
	HAS_PRELOAD_MODS_FINISHED = function(vehicle) return invoker.call(0x06F43E5175EB6D96, vehicle).bool end,
	---  
	RELEASE_PRELOAD_MODS = function(vehicle) invoker.call(0x445D79F995508307, vehicle) end,
	---Sets the tire smoke's color of this vehicle.  
	---  
	---vehicle: The vehicle that is the target of this method.  
	---r: The red level in the RGB color code.  
	---g: The green level in the RGB color code.  
	---b: The blue level in the RGB color code.  
	---  
	---Note: setting r,g,b to 0 will give the car the "Patriot" tire smoke.  
	SET_VEHICLE_TYRE_SMOKE_COLOR = function(vehicle, r, g, b) invoker.call(0xB5BA80F839791C0F, vehicle, r, g, b) end,
	---  
	GET_VEHICLE_TYRE_SMOKE_COLOR = function(vehicle, r, g, b) invoker.call(0xB635392A4938B3C3, vehicle, r, g, b) end,
	---enum WindowTints  
	---{  
	--- WINDOWTINT_NONE,  
	---  WINDOWTINT_PURE_BLACK,  
	---    WINDOWTINT_DARKSMOKE,  
	--- WINDOWTINT_LIGHTSMOKE,  
	---    WINDOWTINT_STOCK,  
	--- WINDOWTINT_LIMO,  
	---  WINDOWTINT_GREEN  
	---};  
	---Full list of all vehicle window tints by DurtyFree https://github.com/DurtyFree/gta-v-data-dumps/blob/master/vehicleColors.json  
	SET_VEHICLE_WINDOW_TINT = function(vehicle, tint) invoker.call(0x57C51E6BAD752696, vehicle, tint) end,
	---  
	GET_VEHICLE_WINDOW_TINT = function(vehicle) return invoker.call(0x0EE21293DAD47C95, vehicle).int end,
	---  
	GET_NUM_VEHICLE_WINDOW_TINTS = function() return invoker.call(0x9D1224004B3A6707).int end,
	---What's this for? Primary and Secondary RGB have their own natives and this one doesn't seem specific.  
	GET_VEHICLE_COLOR = function(vehicle, r, g, b) invoker.call(0xF3CC740D36221548, vehicle, r, g, b) end,
	---Some kind of flags.  
	GET_VEHICLE_COLOURS_WHICH_CAN_BE_SET = function(vehicle) return invoker.call(0xEEBFC7A7EFDC35B4, vehicle).int end,
	---iVar3 = get_vehicle_cause_of_destruction(uLocal_248[iVar2]);  
	---if (iVar3 == joaat("weapon_stickybomb"))  
	---{  
	---	func_171(726);  
	---	iLocal_260 = 1;  
	---}  
	GET_VEHICLE_CAUSE_OF_DESTRUCTION = function(vehicle) return invoker.call(0xE495D1EF4C91FD20, vehicle).int end,
	---Used for helis.  
	OVERRIDE_PLANE_DAMAGE_THREHSOLD = function(vehicle, health) invoker.call(0x5EE5632F47AE9695, vehicle, health) end,
	---  
	_SET_TRANSMISSION_REDUCED_GEAR_RATIO = function(vehicle, toggle) invoker.call(0x337EF33DA3DDB990, vehicle, toggle) end,
	---  
	_GET_VEHICLE_DESIRED_DRIVE_GEAR = function(vehicle) return invoker.call(0xFD8CE53356B5D745, vehicle).int end,
	---From the driver's perspective, is the left headlight broken.  
	GET_IS_LEFT_VEHICLE_HEADLIGHT_DAMAGED = function(vehicle) return invoker.call(0x5EF77C9ADD3B11A3, vehicle).bool end,
	---From the driver's perspective, is the right headlight broken.  
	GET_IS_RIGHT_VEHICLE_HEADLIGHT_DAMAGED = function(vehicle) return invoker.call(0xA7ECB73355EB2F20, vehicle).bool end,
	---Returns true when both headlights are broken. This does not include extralights.  
	GET_BOTH_VEHICLE_HEADLIGHTS_DAMAGED = function(vehicle) return invoker.call(0xEC69ADF931AAE0C3, vehicle).bool end,
	---  
	MODIFY_VEHICLE_TOP_SPEED = function(vehicle, value) invoker.call(0x93A3996368C94158, vehicle, value) end,
	---To reset the max speed, set the `speed` value to `0.0` or lower.  
	SET_VEHICLE_MAX_SPEED = function(vehicle, speed) invoker.call(0xBAA045B4E42F3C06, vehicle, speed) end,
	---Has something to do with trains. Always precedes SET_MISSION_TRAIN_AS_NO_LONGER_NEEDED.  
	---May be true that it can be used with trains not sure, but not specifically for trains. Go find Xbox360 decompiled scripts and search for 'func_1333' in freemode.c it isn't used just for trains. Thanks for the info tho.  
	SET_VEHICLE_STAYS_FROZEN_WHEN_CLEANED_UP = function(vehicle, toggle) invoker.call(0x1CF38D529D7441D9, vehicle, toggle) end,
	---  
	SET_VEHICLE_ACT_AS_IF_HIGH_SPEED_FOR_FRAG_SMASHING = function(vehicle, p1) invoker.call(0x1F9FB66F3A3842D2, vehicle, p1) end,
	---Sets some bit and float of vehicle. float is >= 0  
	SET_PEDS_CAN_FALL_OFF_THIS_VEHICLE_FROM_LARGE_FALL_DAMAGE = function(vehicle, toggle, p2) invoker.call(0x59C3757B3B7408E8, vehicle, toggle, p2) end,
	---  
	ADD_VEHICLE_COMBAT_ANGLED_AVOIDANCE_AREA = function(p0, p1, p2, p3, p4, p5, p6) return invoker.call(0x54B0F614960F4A5F, p0, p1, p2, p3, p4, p5, p6).int end,
	---  
	REMOVE_VEHICLE_COMBAT_AVOIDANCE_AREA = function(p0) invoker.call(0xE30524E1871F481D, p0) end,
	---  
	IS_ANY_PED_RAPPELLING_FROM_HELI = function(vehicle) return invoker.call(0x291E373D483E7EE7, vehicle).bool end,
	---<1.0 - Decreased torque  
	---=1.0 - Default torque  
	--->1.0 - Increased torque  
	---  
	---Negative values will cause the vehicle to go backwards instead of forwards while accelerating.  
	---  
	---value - is between 0.2 and 1.8 in the decompiled scripts.   
	---  
	---This needs to be called every frame to take effect.  
	SET_VEHICLE_CHEAT_POWER_INCREASE = function(vehicle, value) invoker.call(0xB59E4BD37AE292DB, vehicle, value) end,
	---  
	SET_VEHICLE_INFLUENCES_WANTED_LEVEL = function(p0, p1) invoker.call(0x0AD9E8F87FF7C16F, p0, p1) end,
	---Sets the wanted state of this vehicle.  
	SET_VEHICLE_IS_WANTED = function(vehicle, state) invoker.call(0xF7EC25A3EBEEC726, vehicle, state) end,
	---Sets the boat boom position for the `TR3` trailer.  
	---Ratio value is between `0.0` and `1.0`, where `0.0` is 90 degrees to the left of the boat, and `1.0` is just slightly to the right/back of the boat.  
	---To get the current boom position ratio, use GET_BOAT_BOOM_POSITION_RATIO  
	SWING_BOAT_BOOM_TO_RATIO = function(vehicle, ratio) invoker.call(0xF488C566413B4232, vehicle, ratio) end,
	---Same call as ALLOW_BOAT_BOOM_TO_ANIMATE  
	SWING_BOAT_BOOM_FREELY = function(vehicle, toggle) invoker.call(0xC1F981A6F74F0C23, vehicle, toggle) end,
	---  
	ALLOW_BOAT_BOOM_TO_ANIMATE = function(vehicle, toggle) invoker.call(0x0F3B4D4E43177236, vehicle, toggle) end,
	---  
	GET_BOAT_BOOM_POSITION_RATIO = function(vehicle) return invoker.call(0x6636C535F6CC2725, vehicle).float end,
	---  
	DISABLE_PLANE_AILERON = function(vehicle, p1, p2) invoker.call(0x23428FC53C60919C, vehicle, p1, p2) end,
	---Returns true when in a vehicle, false whilst entering/exiting.  
	GET_IS_VEHICLE_ENGINE_RUNNING = function(vehicle) return invoker.call(0xAE31E7DF9B5B132E, vehicle).bool end,
	---  
	SET_VEHICLE_USE_ALTERNATE_HANDLING = function(vehicle, toggle) invoker.call(0x1D97D1E3A70A649F, vehicle, toggle) end,
	---Only works on bikes, both X and Y work in the -1 - 1 range.  
	---  
	---X forces the bike to turn left or right (-1, 1)  
	---Y forces the bike to lean to the left or to the right (-1, 1)  
	---  
	---Example with X -1/Y 1  
	---http://i.imgur.com/TgIuAPJ.jpg  
	SET_BIKE_ON_STAND = function(vehicle, x, y) invoker.call(0x9CFA4896C3A53CBB, vehicle, x, y) end,
	---  
	SET_VEHICLE_NOT_STEALABLE_AMBIENTLY = function(vehicle, p1) invoker.call(0xAB04325045427AAE, vehicle, p1) end,
	---  
	LOCK_DOORS_WHEN_NO_LONGER_NEEDED = function(vehicle) invoker.call(0xCFD778E7904C255E, vehicle) end,
	---  
	SET_LAST_DRIVEN_VEHICLE = function(vehicle) invoker.call(0xACFB2463CC22BED2, vehicle) end,
	---  
	GET_LAST_DRIVEN_VEHICLE = function() return invoker.call(0xB2D06FAEDE65B577).int end,
	---  
	CLEAR_LAST_DRIVEN_VEHICLE = function() invoker.call(0xE01903C47C7AC89E) end,
	---  
	SET_VEHICLE_HAS_BEEN_DRIVEN_FLAG = function(vehicle, toggle) invoker.call(0x02398B627547189C, vehicle, toggle) end,
	---  
	SET_TASK_VEHICLE_GOTO_PLANE_MIN_HEIGHT_ABOVE_TERRAIN = function(plane, height) invoker.call(0xB893215D8D4C015B, plane, height) end,
	---  
	SET_VEHICLE_LOD_MULTIPLIER = function(vehicle, multiplier) invoker.call(0x93AE6A61BE015BF1, vehicle, multiplier) end,
	---  
	SET_VEHICLE_CAN_SAVE_IN_GARAGE = function(vehicle, toggle) invoker.call(0x428BACCDF5E26EAD, vehicle, toggle) end,
	---Also includes some "turnOffBones" when vehicle mods are installed.  
	GET_VEHICLE_NUM_OF_BROKEN_OFF_PARTS = function(vehicle) return invoker.call(0x42A4BEB35D372407, vehicle).int end,
	---  
	GET_VEHICLE_NUM_OF_BROKEN_LOOSEN_PARTS = function(vehicle) return invoker.call(0x2C8CBFE1EA5FC631, vehicle).int end,
	---  
	SET_FORCE_VEHICLE_ENGINE_DAMAGE_BY_BULLET = function(p0, p1) invoker.call(0x4D9D109F63FEE1D4, p0, p1) end,
	---Allows creation of CEventShockingPlaneFlyby, CEventShockingHelicopterOverhead, and other(?) Shocking events  
	SET_VEHICLE_GENERATES_ENGINE_SHOCKING_EVENTS = function(vehicle, toggle) invoker.call(0x279D50DE5652D935, vehicle, toggle) end,
	---Copies sourceVehicle's damage (broken bumpers, broken lights, etc.) to targetVehicle.  
	COPY_VEHICLE_DAMAGES = function(sourceVehicle, targetVehicle) invoker.call(0xE44A982368A4AF23, sourceVehicle, targetVehicle) end,
	---  
	DISABLE_VEHICLE_EXPLOSION_BREAK_OFF_PARTS = function() invoker.call(0xF25E02CB9C5818F8) end,
	---  
	SET_LIGHTS_CUTOFF_DISTANCE_TWEAK = function(distance) invoker.call(0xBC3CCA5844452B06, distance) end,
	---Commands the driver of an armed vehicle (p0) to shoot its weapon at a target (p1). p3, p4 and p5 are the coordinates of the target. Example:  
	---  
	---WEAPON::SET_CURRENT_PED_VEHICLE_WEAPON(pilot,MISC::GET_HASH_KEY("VEHICLE_WEAPON_PLANE_ROCKET"));                        VEHICLE::SET_VEHICLE_SHOOT_AT_TARGET(pilot, target, targPos.x, targPos.y, targPos.z);  
	SET_VEHICLE_SHOOT_AT_TARGET = function(driver, entity, xTarget, yTarget, zTarget) invoker.call(0x74CD9A9327A282EA, driver, entity, xTarget, yTarget, zTarget) end,
	---  
	GET_VEHICLE_LOCK_ON_TARGET = function(vehicle, entity) return invoker.call(0x8F5EBAB1F260CFCE, vehicle, entity).bool end,
	---  
	SET_FORCE_HD_VEHICLE = function(vehicle, toggle) invoker.call(0x97CE68CB032583F0, vehicle, toggle) end,
	---  
	SET_VEHICLE_CUSTOM_PATH_NODE_STREAMING_RADIUS = function(vehicle, p1) invoker.call(0x182F266C2D9E2BEB, vehicle, p1) end,
	---  
	GET_VEHICLE_PLATE_TYPE = function(vehicle) return invoker.call(0x9CCC9525BF2408E0, vehicle).int end,
	---in script hook .net   
	---  
	---Vehicle v = ...;  
	---Function.Call(Hash.TRACK_VEHICLE_VISIBILITY, v.Handle);  
	TRACK_VEHICLE_VISIBILITY = function(vehicle) invoker.call(0x64473AEFDCF47DCA, vehicle) end,
	---must be called after TRACK_VEHICLE_VISIBILITY   
	---  
	---it's not instant so probabilly must pass an 'update' to see correct result.  
	IS_VEHICLE_VISIBLE = function(vehicle) return invoker.call(0xAA0A52D24FB98293, vehicle).bool end,
	---  
	SET_VEHICLE_GRAVITY = function(vehicle, toggle) invoker.call(0x89F149B6131E57DA, vehicle, toggle) end,
	---Enable/Disables global slipstream physics  
	SET_ENABLE_VEHICLE_SLIPSTREAMING = function(toggle) invoker.call(0xE6C0C80B8C867537, toggle) end,
	---  
	SET_VEHICLE_SLIPSTREAMING_SHOULD_TIME_OUT = function(toggle) invoker.call(0xF051D9BFB6BA39C0, toggle) end,
	---Returns a float value between 0.0 and 3.0 related to its slipstream draft (boost/speedup).  
	GET_VEHICLE_CURRENT_TIME_IN_SLIP_STREAM = function(vehicle) return invoker.call(0x36492C2F0D134C56, vehicle).float end,
	---Returns true if the vehicle is being slipstreamed by another vehicle  
	IS_VEHICLE_PRODUCING_SLIP_STREAM = function(vehicle) return invoker.call(0x48C633E94A8142A7, vehicle).bool end,
	---  
	SET_VEHICLE_INACTIVE_DURING_PLAYBACK = function(vehicle, toggle) invoker.call(0x06582AFF74894C75, vehicle, toggle) end,
	---  
	SET_VEHICLE_ACTIVE_DURING_PLAYBACK = function(vehicle, toggle) invoker.call(0xDFFCEF48E511DB48, vehicle, toggle) end,
	---Returns false if the vehicle has the FLAG_NO_RESPRAY flag set.  
	IS_VEHICLE_SPRAYABLE = function(vehicle) return invoker.call(0x8D474C8FAEFF6CDE, vehicle).bool end,
	---  
	SET_VEHICLE_ENGINE_CAN_DEGRADE = function(vehicle, toggle) invoker.call(0x983765856F2564F9, vehicle, toggle) end,
	---Adds some kind of shadow to the vehicle.  
	---  
	---p1 and p2 use values from 0-255 and both make the shadow darker the lower the value is. -1 disables the effect.  
	DISABLE_VEHCILE_DYNAMIC_AMBIENT_SCALES = function(vehicle, p1, p2) invoker.call(0xF0E4BA16D1DB546C, vehicle, p1, p2) end,
	---Remove the weird shadow applied by DISABLE_VEHCILE_DYNAMIC_AMBIENT_SCALES.  
	ENABLE_VEHICLE_DYNAMIC_AMBIENT_SCALES = function(vehicle) invoker.call(0xF87D9F2301F7D206, vehicle) end,
	---  
	IS_PLANE_LANDING_GEAR_INTACT = function(plane) return invoker.call(0x4198AB0022B15F87, plane).bool end,
	---  
	ARE_PLANE_PROPELLERS_INTACT = function(plane) return invoker.call(0x755D6D5267CBBD7E, plane).bool end,
	---  
	SET_PLANE_PROPELLER_HEALTH = function(plane, health) return invoker.call(0x4C815EB175086F84, plane, health).bool end,
	---  
	SET_VEHICLE_CAN_DEFORM_WHEELS = function(vehicle, toggle) invoker.call(0x0CDDA42F9E360CA6, vehicle, toggle) end,
	---Only returns true if the vehicle was marked as stolen with SET_VEHICLE_IS_STOLEN.  
	IS_VEHICLE_STOLEN = function(vehicle) return invoker.call(0x4AF9BD80EEBEB453, vehicle).bool end,
	---  
	SET_VEHICLE_IS_STOLEN = function(vehicle, isStolen) invoker.call(0x67B2C79AA7FF5738, vehicle, isStolen) end,
	---This native sets the turbulence multiplier. It only works for planes.  
	---0.0 = no turbulence at all.  
	---1.0 = heavy turbulence.  
	---Works by just calling it once, does not need to be called every tick.  
	SET_PLANE_TURBULENCE_MULTIPLIER = function(vehicle, multiplier) invoker.call(0xAD2D28A1AFDFF131, vehicle, multiplier) end,
	---  
	ARE_WINGS_OF_PLANE_INTACT = function(plane) return invoker.call(0x5991A01434CE9677, plane).bool end,
	---This native doesn't seem to do anything, might be a debug-only native.  
	---  
	---Confirmed, it is a debug native.  
	ALLOW_AMBIENT_VEHICLES_TO_AVOID_ADVERSE_CONDITIONS = function(vehicle) invoker.call(0xB264C4D2F2B0A78B, vehicle) end,
	---  
	DETACH_VEHICLE_FROM_CARGOBOB = function(vehicle, cargobob) invoker.call(0x0E21D3DF1051399D, vehicle, cargobob) end,
	---  
	DETACH_VEHICLE_FROM_ANY_CARGOBOB = function(vehicle) return invoker.call(0xADF7BE450512C12F, vehicle).bool end,
	---  
	DETACH_ENTITY_FROM_CARGOBOB = function(cargobob, entity) return invoker.call(0xAF03011701811146, cargobob, entity).bool end,
	---  
	IS_VEHICLE_ATTACHED_TO_CARGOBOB = function(cargobob, vehicleAttached) return invoker.call(0xD40148F22E81A1D9, cargobob, vehicleAttached).bool end,
	---Returns attached vehicle (Vehicle in parameter must be cargobob)  
	GET_VEHICLE_ATTACHED_TO_CARGOBOB = function(cargobob) return invoker.call(0x873B82D42AC2B9E5, cargobob).int end,
	---  
	GET_ENTITY_ATTACHED_TO_CARGOBOB = function(p0) return invoker.call(0x99093F60746708CA, p0).int end,
	---  
	ATTACH_VEHICLE_TO_CARGOBOB = function(cargobob, vehicle, p2, x, y, z) invoker.call(0x4127F1D84E347769, cargobob, vehicle, p2, x, y, z) end,
	---  
	ATTACH_ENTITY_TO_CARGOBOB = function(p0, p1, p2, p3, p4, p5) invoker.call(0xA1DD82F3CCF9A01E, p0, p1, p2, p3, p4, p5) end,
	---Stops cargobob from being able to detach the attached vehicle.  
	SET_CARGOBOB_FORCE_DONT_DETACH_VEHICLE = function(cargobob, toggle) invoker.call(0x571FEB383F629926, cargobob, toggle) end,
	---  
	SET_CARGOBOB_EXCLUDE_FROM_PICKUP_ENTITY = function(p0, p1) invoker.call(0x1F34B0626C594380, p0, p1) end,
	---  
	CAN_CARGOBOB_PICK_UP_ENTITY = function(p0, p1) return invoker.call(0x2C1D8B3B19E517CC, p0, p1).bool end,
	---Gets the position of the cargobob hook, in world coords.  
	GET_ATTACHED_PICK_UP_HOOK_POSITION = function(cargobob) return invoker.call(0xCBDB9B923CACC92D, cargobob).scr_vec3 end,
	---Returns true only when the hook is active, will return false if the magnet is active  
	DOES_CARGOBOB_HAVE_PICK_UP_ROPE = function(cargobob) return invoker.call(0x1821D91AD4B56108, cargobob).bool end,
	---Drops the Hook/Magnet on a cargobob  
	---  
	---state  
	---enum eCargobobHook  
	---{  
	---  CARGOBOB_HOOK = 0,  
	---    CARGOBOB_MAGNET = 1,  
	---};  
	CREATE_PICK_UP_ROPE_FOR_CARGOBOB = function(cargobob, state) invoker.call(0x7BEB0C7A235F6F3B, cargobob, state) end,
	---Retracts the hook on the cargobob.  
	---  
	---Note: after you retract it the natives for dropping the hook no longer work  
	REMOVE_PICK_UP_ROPE_FOR_CARGOBOB = function(cargobob) invoker.call(0x9768CF648F54C804, cargobob) end,
	---min: 1.9f, max: 100.0f  
	SET_PICKUP_ROPE_LENGTH_FOR_CARGOBOB = function(cargobob, length1, length2, p3) invoker.call(0x877C1EAEAC531023, cargobob, length1, length2, p3) end,
	---  
	SET_PICKUP_ROPE_LENGTH_WITHOUT_CREATING_ROPE_FOR_CARGOBOB = function(p0, p1, p2) invoker.call(0xC0ED6438E6D39BA8, p0, p1, p2) end,
	---  
	SET_CARGOBOB_PICKUP_ROPE_DAMPING_MULTIPLIER = function(p0, p1) invoker.call(0xCF1182F682F65307, p0, p1) end,
	---  
	SET_CARGOBOB_PICKUP_ROPE_TYPE = function(p0, p1) invoker.call(0x0D5F65A8F4EBDAB5, p0, p1) end,
	---Returns true only when the magnet is active, will return false if the hook is active  
	DOES_CARGOBOB_HAVE_PICKUP_MAGNET = function(cargobob) return invoker.call(0x6E08BF5B3722BAC9, cargobob).bool end,
	---Won't attract or magnetize to any helicopters or planes of course, but that's common sense.  
	SET_CARGOBOB_PICKUP_MAGNET_ACTIVE = function(cargobob, isActive) invoker.call(0x9A665550F8DA349B, cargobob, isActive) end,
	---  
	SET_CARGOBOB_PICKUP_MAGNET_STRENGTH = function(cargobob, strength) invoker.call(0xBCBFCD9D1DAC19E2, cargobob, strength) end,
	---  
	SET_CARGOBOB_PICKUP_MAGNET_FALLOFF = function(cargobob, p1) invoker.call(0xA17BAD153B51547E, cargobob, p1) end,
	---  
	SET_CARGOBOB_PICKUP_MAGNET_REDUCED_STRENGTH = function(cargobob, p1) invoker.call(0x66979ACF5102FD2F, cargobob, p1) end,
	---  
	SET_CARGOBOB_PICKUP_MAGNET_REDUCED_FALLOFF = function(cargobob, p1) invoker.call(0x6D8EAC07506291FB, cargobob, p1) end,
	---  
	SET_CARGOBOB_PICKUP_MAGNET_PULL_STRENGTH = function(cargobob, p1) invoker.call(0xED8286F71A819BAA, cargobob, p1) end,
	---  
	SET_CARGOBOB_PICKUP_MAGNET_PULL_ROPE_LENGTH = function(vehicle, p1) invoker.call(0x685D5561680D088B, vehicle, p1) end,
	---  
	SET_CARGOBOB_PICKUP_MAGNET_SET_TARGETED_MODE = function(vehicle, cargobob) invoker.call(0xE301BD63E9E13CF0, vehicle, cargobob) end,
	---  
	SET_CARGOBOB_PICKUP_MAGNET_SET_AMBIENT_MODE = function(vehicle, p1, p2) invoker.call(0x9BDDC73CC6A115D4, vehicle, p1, p2) end,
	---  
	SET_CARGOBOB_PICKUP_MAGNET_ENSURE_PICKUP_ENTITY_UPRIGHT = function(vehicle, p1) invoker.call(0x56EB5E94318D3FB6, vehicle, p1) end,
	---  
	DOES_VEHICLE_HAVE_WEAPONS = function(vehicle) return invoker.call(0x25ECB9F8017D98E0, vehicle).bool end,
	---  
	SET_VEHICLE_WILL_TELL_OTHERS_TO_HURRY = function(vehicle, p1) invoker.call(0x2C4A1590ABF43E8B, vehicle, p1) end,
	---Full list of weapons by DurtyFree (Search for VEHICLE_*): https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json  
	DISABLE_VEHICLE_WEAPON = function(disabled, weaponHash, vehicle, owner) invoker.call(0xF4FC6A6F67D8D856, disabled, weaponHash, vehicle, owner) end,
	---Full list of weapons by DurtyFree (Search for VEHICLE_*): https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json  
	IS_VEHICLE_WEAPON_DISABLED = function(weaponHash, vehicle, owner) return invoker.call(0x563B65A643ED072E, weaponHash, vehicle, owner).bool end,
	---  
	SET_VEHICLE_USED_FOR_PILOT_SCHOOL = function(vehicle, toggle) invoker.call(0xE05DD0E9707003A3, vehicle, toggle) end,
	---  
	SET_VEHICLE_ACTIVE_FOR_PED_NAVIGATION = function(vehicle, toggle) invoker.call(0x21115BCD6E44656A, vehicle, toggle) end,
	---Returns an int  
	---  
	---Vehicle Classes:  
	---0: Compacts  
	---1: Sedans  
	---2: SUVs  
	---3: Coupes  
	---4: Muscle  
	---5: Sports Classics  
	---6: Sports  
	---7: Super  
	---8: Motorcycles  
	---9: Off-road  
	---10: Industrial  
	---11: Utility  
	---12: Vans  
	---13: Cycles  
	---14: Boats  
	---15: Helicopters  
	---16: Planes  
	---17: Service  
	---18: Emergency  
	---19: Military  
	---20: Commercial  
	---21: Trains  
	---  
	---char buffer[128];  
	---std::sprintf(buffer, "VEH_CLASS_%i", VEHICLE::GET_VEHICLE_CLASS(vehicle));  
	---  
	---const char* className = HUD::GET_FILENAME_FOR_AUDIO_CONVERSATION(buffer);  
	GET_VEHICLE_CLASS = function(vehicle) return invoker.call(0x29439776AAA00A62, vehicle).int end,
	---char buffer[128];  
	---std::sprintf(buffer, "VEH_CLASS_%i", VEHICLE::GET_VEHICLE_CLASS_FROM_NAME (hash));  
	---  
	---const char* className = HUD::GET_FILENAME_FOR_AUDIO_CONVERSATION(buffer);  
	---  
	---Full list of vehicles by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/vehicles.json  
	GET_VEHICLE_CLASS_FROM_NAME = function(modelHash) return invoker.call(0xDEDF1C8BD47C2200, modelHash).int end,
	---  
	SET_PLAYERS_LAST_VEHICLE = function(vehicle) invoker.call(0xBCDF8BAF56C87B6A, vehicle) end,
	---  
	SET_VEHICLE_CAN_BE_USED_BY_FLEEING_PEDS = function(vehicle, toggle) invoker.call(0x300504B23BD3B711, vehicle, toggle) end,
	---  
	SET_AIRCRAFT_PILOT_SKILL_NOISE_SCALAR = function(vehicle, p1) invoker.call(0xE5810AC70602F2F5, vehicle, p1) end,
	---Money pickups are created around cars when they explode. Only works when the vehicle model is a car. A single pickup is between 1 and 18 dollars in size. All car models seem to give the same amount of money.  
	---  
	---youtu.be/3arlUxzHl5Y   
	---i.imgur.com/WrNpYFs.jpg  
	SET_VEHICLE_DROPS_MONEY_WHEN_BLOWN_UP = function(vehicle, toggle) invoker.call(0x068F64F2470F9656, vehicle, toggle) end,
	---  
	SET_VEHICLE_KEEP_ENGINE_ON_WHEN_ABANDONED = function(vehicle, toggle) invoker.call(0xB8FBC8B1330CA9B4, vehicle, toggle) end,
	---Seems to copy some values in vehicle  
	SET_VEHICLE_IMPATIENCE_TIMER = function(vehicle, p1) invoker.call(0x6A973569BA094650, vehicle, p1) end,
	---Use the "AIHandling" string found in handling.meta  
	SET_VEHICLE_HANDLING_OVERRIDE = function(vehicle, hash) invoker.call(0x10655FAB9915623D, vehicle, hash) end,
	---Max value is 32767  
	SET_VEHICLE_EXTENDED_REMOVAL_RANGE = function(vehicle, range) invoker.call(0x79DF7E806202CE01, vehicle, range) end,
	---  
	SET_VEHICLE_STEERING_BIAS_SCALAR = function(p0, p1) invoker.call(0x9007A2F21DC108D4, p0, p1) end,
	---value between 0.0 and 1.0  
	SET_HELI_CONTROL_LAGGING_RATE_SCALAR = function(helicopter, multiplier) invoker.call(0x6E0859B530A365CC, helicopter, multiplier) end,
	---Seems to be related to the metal parts, not tyres (like i was expecting lol)  
	SET_VEHICLE_FRICTION_OVERRIDE = function(vehicle, friction) invoker.call(0x1837AF7C627009BA, vehicle, friction) end,
	---  
	SET_VEHICLE_WHEELS_CAN_BREAK_OFF_WHEN_BLOW_UP = function(vehicle, toggle) invoker.call(0xA37B9A517B133349, vehicle, toggle) end,
	---  
	ARE_PLANE_CONTROL_PANELS_INTACT = function(vehicle, p1) return invoker.call(0xF78F94D60248C737, vehicle, p1).bool end,
	---  
	SET_VEHICLE_CEILING_HEIGHT = function(vehicle, height) invoker.call(0xA46413066687A328, vehicle, height) end,
	---  
	SET_VEHICLE_NO_EXPLOSION_DAMAGE_FROM_DRIVER = function(vehicle, toggle) invoker.call(0x5E569EC46EC21CAE, vehicle, toggle) end,
	---  
	CLEAR_VEHICLE_ROUTE_HISTORY = function(vehicle) invoker.call(0x6D6AF961B72728AE, vehicle) end,
	---  
	DOES_VEHICLE_EXIST_WITH_DECORATOR = function(decorator) return invoker.call(0x956B409B984D9BF7, decorator).int end,
	---Used to be incorrectly named SET_VEHICLE_EXCLUSIVE_DRIVER  
	---Toggles a flag related to SET_VEHICLE_EXCLUSIVE_DRIVER, however, doesn't enable that feature (or trigger script events related to it).  
	SET_VEHICLE_AI_CAN_USE_EXCLUSIVE_SEATS = function(vehicle, toggle) invoker.call(0x41062318F23ED854, vehicle, toggle) end,
	---index: 0 - 1  
	---  
	---Used to be incorrectly named _SET_VEHICLE_EXCLUSIVE_DRIVER_2  
	SET_VEHICLE_EXCLUSIVE_DRIVER = function(vehicle, ped, index) invoker.call(0xB5C51B5502E85E83, vehicle, ped, index) end,
	---  
	IS_PED_EXCLUSIVE_DRIVER_OF_VEHICLE = function(ped, vehicle, outIndex) return invoker.call(0xB09D25E77C33EB3F, ped, vehicle, outIndex).bool end,
	---  
	DISABLE_INDIVIDUAL_PLANE_PROPELLER = function(vehicle, propeller) invoker.call(0x500873A45724C863, vehicle, propeller) end,
	---  
	_ENABLE_INDIVIDUAL_PLANE_PROPELLER = function(vehicle, propeller) invoker.call(0xDC05D2777F855F44, vehicle, propeller) end,
	---  
	SET_VEHICLE_FORCE_AFTERBURNER = function(vehicle, toggle) invoker.call(0xB055A34527CB8FD7, vehicle, toggle) end,
	---R* used it to "remove" vehicle windows when "nightshark" had some mod, which adding some kind of armored windows. When enabled, you can't break vehicles glass. All your bullets wiil shoot through glass. You also will not able to break the glass with any other way (hitting and etc)  
	SET_DONT_PROCESS_VEHICLE_GLASS = function(vehicle, toggle) invoker.call(0x1087BC8EC540DAEB, vehicle, toggle) end,
	---  
	SET_DISABLE_WANTED_CONES_RESPONSE = function(vehicle, toggle) invoker.call(0x4AD280EB48B2D8E6, vehicle, toggle) end,
	---  
	SET_USE_DESIRED_Z_CRUISE_SPEED_FOR_LANDING = function(vehicle, toggle) invoker.call(0xB68CFAF83A02768D, vehicle, toggle) end,
	---  
	SET_ARRIVE_DISTANCE_OVERRIDE_FOR_VEHICLE_PERSUIT_ATTACK = function(vehicle, p1) invoker.call(0x0205F5365292D2EB, vehicle, p1) end,
	---  
	SET_VEHICLE_READY_FOR_CLEANUP = function(p0) invoker.call(0xCF9159024555488C, p0) end,
	---Toggles to render distant vehicles. They may not be vehicles but images to look like vehicles.  
	SET_DISTANT_CARS_ENABLED = function(toggle) invoker.call(0xF796359A959DF65D, toggle) end,
	---Sets the color of the neon lights of the specified vehicle.  
	SET_VEHICLE_NEON_COLOUR = function(vehicle, r, g, b) invoker.call(0x8E0A582209A62695, vehicle, r, g, b) end,
	---Index references CVehicleModelColor  
	SET_VEHICLE_NEON_INDEX_COLOUR = function(vehicle, index) invoker.call(0xB93B2867F7B479D1, vehicle, index) end,
	---Gets the color of the neon lights of the specified vehicle.  
	---  
	---See SET_VEHICLE_NEON_COLOUR (0x8E0A582209A62695) for more information  
	GET_VEHICLE_NEON_COLOUR = function(vehicle, r, g, b) invoker.call(0x7619EEE8C886757F, vehicle, r, g, b) end,
	---Sets the neon lights of the specified vehicle on/off.  
	---  
	---Indices:  
	---0 = Left  
	---1 = Right  
	---2 = Front  
	---3 = Back  
	SET_VEHICLE_NEON_ENABLED = function(vehicle, index, toggle) invoker.call(0x2AA720E4287BF269, vehicle, index, toggle) end,
	---indices:  
	---0 = Left  
	---1 = Right  
	---2 = Front  
	---3 = Back  
	GET_VEHICLE_NEON_ENABLED = function(vehicle, index) return invoker.call(0x8C4B92553E4766A5, vehicle, index).bool end,
	---  
	SET_AMBIENT_VEHICLE_NEON_ENABLED = function(p0) invoker.call(0x35E0654F4BAD7971, p0) end,
	---  
	SUPPRESS_NEONS_ON_VEHICLE = function(vehicle, toggle) invoker.call(0x83F813570FF519DE, vehicle, toggle) end,
	---  
	SET_DISABLE_SUPERDUMMY = function(vehicle, p1) invoker.call(0xB088E9A47AE6EDD5, vehicle, p1) end,
	---  
	REQUEST_VEHICLE_DIAL = function(vehicle) invoker.call(0xDBA3C090E3D74690, vehicle) end,
	---Seems related to vehicle health, like the one in IV.  
	---Max 1000, min 0.  
	---Vehicle does not necessarily explode or become undrivable at 0.  
	GET_VEHICLE_BODY_HEALTH = function(vehicle) return invoker.call(0xF271147EB7B40F12, vehicle).float end,
	---p2 often set to 1000.0 in the decompiled scripts.  
	SET_VEHICLE_BODY_HEALTH = function(vehicle, value) invoker.call(0xB77D05AC8C78AADB, vehicle, value) end,
	---Outputs 2 Vector3's.  
	---Scripts check if out2.x - out1.x > someshit.x  
	---Could be suspension related, as in max suspension height and min suspension height, considering the natives location.  
	GET_VEHICLE_SIZE = function(vehicle, out1, out2) invoker.call(0xDF7E3EEB29642C38, vehicle, out1, out2) end,
	---Gets the height of the vehicle's suspension.  
	---The higher the value the lower the suspension. Each 0.002 corresponds with one more level lowered.  
	---0.000 is the stock suspension.  
	---0.008 is Ultra Suspension.  
	GET_FAKE_SUSPENSION_LOWERING_AMOUNT = function(vehicle) return invoker.call(0x53952FD2BAA19F17, vehicle).float end,
	---  
	SET_CAR_HIGH_SPEED_BUMP_SEVERITY_MULTIPLIER = function(multiplier) invoker.call(0x84FD40F56075E816, multiplier) end,
	---  
	GET_NUMBER_OF_VEHICLE_DOORS = function(vehicle) return invoker.call(0x92922A607497B14D, vehicle).int end,
	---If false, lowers hydraulics (if raised) and disables hydraulics controls. If true, raises hydraulics and enables hydraulics controls.  
	---  
	---Only used once in each carmod script, on a car that does not have hydraulics to begin with.  
	SET_HYDRAULICS_CONTROL = function(vehicle, toggle) invoker.call(0x28B18377EB6E25F6, vehicle, toggle) end,
	---  
	SET_CAN_ADJUST_GROUND_CLEARANCE = function(vehicle, p1) invoker.call(0xA7DCDF4DED40A8F4, vehicle, p1) end,
	---0 min 100 max  
	---starts at 100  
	---Seams to have health zones  
	---Front of vehicle when damaged goes from 100-50 and stops at 50.  
	---Rear can be damaged from 100-0  
	---Only tested with two cars.  
	---  
	---any idea how this differs from the first one?  
	---  
	-----  
	---May return the vehicle health on a scale of 0.0 - 100.0 (needs to be confirmed)  
	---  
	---example:  
	---  
	---v_F = ENTITY::GET_ENTITY_MODEL(v_3);  
	---if (((v_F == ${tanker}) || (v_F == ${armytanker})) || (v_F == ${tanker2})) {  
	---    if (VEHICLE::GET_VEHICLE_HEALTH_PERCENTAGE(v_3) <= 1.0) {  
	---        NETWORK::NETWORK_EXPLODE_VEHICLE(v_3, 1, 1, -1);  
	---    }  
	---}  
	GET_VEHICLE_HEALTH_PERCENTAGE = function(vehicle, maxEngineHealth, maxPetrolTankHealth, maxBodyHealth, maxMainRotorHealth, maxTailRotorHealth, maxUnkHealth) return invoker.call(0xB8EF61207C2393A9, vehicle, maxEngineHealth, maxPetrolTankHealth, maxBodyHealth, maxMainRotorHealth, maxTailRotorHealth, maxUnkHealth).float end,
	---  
	GET_VEHICLE_IS_MERCENARY = function(vehicle) return invoker.call(0xD4C4642CB7F50B5D, vehicle).bool end,
	---  
	SET_VEHICLE_BROKEN_PARTS_DONT_AFFECT_AI_HANDLING = function(vehicle, p1) invoker.call(0xC361AA040D6637A8, vehicle, p1) end,
	---  
	SET_VEHICLE_KERS_ALLOWED = function(vehicle, toggle) invoker.call(0x99C82F8A139F3E4E, vehicle, toggle) end,
	---Returns true if the vehicle has a HF_HAS_KERS (strHandlingFlags 0x4) handing flag set, for instance the lectro/vindicator bikes or the open wheelers.  
	GET_VEHICLE_HAS_KERS = function(vehicle) return invoker.call(0x50634E348C8D44EF, vehicle).bool end,
	---  
	SET_PLANE_RESIST_TO_EXPLOSION = function(vehicle, toggle) invoker.call(0xE16142B94664DEFD, vehicle, toggle) end,
	---  
	SET_HELI_RESIST_TO_EXPLOSION = function(vehicle, toggle) invoker.call(0x8074CC1886802912, vehicle, toggle) end,
	---  
	SET_DISABLE_BMX_EXTRA_TRICK_FORCES = function(p0) invoker.call(0x26D99D5A82FD18E8, p0) end,
	---Works only on vehicles that support hydraulics.  
	SET_HYDRAULIC_SUSPENSION_RAISE_FACTOR = function(vehicle, wheelId, value) invoker.call(0x84EA99C62CB3EF0C, vehicle, wheelId, value) end,
	---  
	GET_HYDRAULIC_SUSPENSION_RAISE_FACTOR = function(vehicle, wheelId) return invoker.call(0x0BB5CBDDD0F25AE3, vehicle, wheelId).float end,
	---  
	SET_CAN_USE_HYDRAULICS = function(vehicle, toggle) invoker.call(0x1201E8A3290A3B98, vehicle, toggle) end,
	---States:  
	---4 = raise  
	---5 = lower  
	---6 = jump  
	SET_HYDRAULIC_VEHICLE_STATE = function(vehicle, state) invoker.call(0x8EA86DF356801C7D, vehicle, state) end,
	---Sets vehicle wheel hydraulic states transition. Known states:  
	---0 - reset  
	---1 - raise wheel (uses value arg, works just like _SET_VEHICLE_HYDRAULIC_WHEEL_VALUE)  
	---2 - jump using wheel  
	SET_HYDRAULIC_WHEEL_STATE = function(vehicle, wheelId, state, value, p4) invoker.call(0xC24075310A8B9CD1, vehicle, wheelId, state, value, p4) end,
	---  
	HAS_VEHICLE_PETROLTANK_SET_ON_FIRE_BY_ENTITY = function(p0, p1) return invoker.call(0x5BA68A0840D546AC, p0, p1).bool end,
	---  
	CLEAR_VEHICLE_PETROLTANK_FIRE_CULPRIT = function(vehicle) invoker.call(0x4419966C9936071A, vehicle) end,
	---Controls how fast bobbleheads and tsurikawas move on each axis.  
	---  
	---p2 is probably z, but changing that value didn't seem to have a noticeable effect.  
	SET_VEHICLE_BOBBLEHEAD_VELOCITY = function(x, y, p2) invoker.call(0x870B8B7A766615C8, x, y, p2) end,
	---  
	GET_VEHICLE_IS_DUMMY = function(p0) return invoker.call(0x8533CAFDE1F0F336, p0).bool end,
	---  
	SET_VEHICLE_DAMAGE_SCALE = function(vehicle, p1) return invoker.call(0x4E20D2A627011E8E, vehicle, p1).bool end,
	---Does not actually return anything.  
	_SET_VEHICLE_EXPLOSIVE_DAMAGE_SCALE = function(vehicle, scale) return invoker.call(0x84D7FFD223CAAFFD, vehicle, scale) end,
	---  
	SET_VEHICLE_WEAPON_DAMAGE_SCALE = function(vehicle, multiplier) return invoker.call(0x45A561A9421AB6AD, vehicle, multiplier).bool end,
	---  
	SET_DISABLE_DAMAGE_WITH_PICKED_UP_ENTITY = function(p0, p1) return invoker.call(0xD4196117AF7BB974, p0, p1).bool end,
	---  
	SET_VEHICLE_USES_MP_PLAYER_DAMAGE_MULTIPLIER = function(p0, p1) invoker.call(0xBB2333BB87DDD87F, p0, p1) end,
	---When enabled, the player won't fall off the bike when landing from large heights.  
	SET_BIKE_EASY_TO_LAND = function(vehicle, toggle) invoker.call(0x73561D4425A021A2, vehicle, toggle) end,
	---Inverts vehicle's controls. So INPUT_VEH_ACCELERATE will be INPUT_VEH_BRAKE and vise versa (same for A/D controls)  
	---Doesn't work for planes/helis.  
	SET_INVERT_VEHICLE_CONTROLS = function(vehicle, state) invoker.call(0x5B91B229243351A8, vehicle, state) end,
	---Disables the screen effects and sound effects when driving over a speed boost pad.  
	SET_SPEED_BOOST_EFFECT_DISABLED = function(disabled) invoker.call(0x7BBE7FF626A591FE, disabled) end,
	---Disables the screen effects and sound effects when driving over a slowdown pad.  
	SET_SLOW_DOWN_EFFECT_DISABLED = function(disabled) invoker.call(0x65B080555EA48149, disabled) end,
	---  
	SET_FORMATION_LEADER = function(vehicle, x, y, z, p4) invoker.call(0x428AD3E26C8D9EB0, vehicle, x, y, z, p4) end,
	---Resets the effect of SET_FORMATION_LEADER  
	RESET_FORMATION_LEADER = function() invoker.call(0xE2F53F172B45EDE1) end,
	---  
	GET_IS_BOAT_CAPSIZED = function(vehicle) return invoker.call(0xBA91D045575699AD, vehicle).bool end,
	---  
	SET_ALLOW_RAMMING_SOOP_OR_RAMP = function(p0, p1) invoker.call(0x80E3357FDEF45C21, p0, p1) end,
	---  
	SET_SCRIPT_RAMP_IMPULSE_SCALE = function(vehicle, impulseScale) invoker.call(0xEFC13B1CE30D755D, vehicle, impulseScale) end,
	---doorId: see SET_VEHICLE_DOOR_SHUT  
	GET_IS_DOOR_VALID = function(vehicle, doorId) return invoker.call(0x645F4B6E8499F632, vehicle, doorId).bool end,
	---  
	SET_SCRIPT_ROCKET_BOOST_RECHARGE_TIME = function(vehicle, seconds) invoker.call(0xE00F2AB100B76E89, vehicle, seconds) end,
	---  
	GET_HAS_ROCKET_BOOST = function(vehicle) return invoker.call(0x36D782F68B309BDA, vehicle).bool end,
	---  
	IS_ROCKET_BOOST_ACTIVE = function(vehicle) return invoker.call(0x3D34E80EED4AE3BE, vehicle).bool end,
	---  
	SET_ROCKET_BOOST_ACTIVE = function(vehicle, active) invoker.call(0x81E1552E35DC3839, vehicle, active) end,
	---  
	GET_HAS_RETRACTABLE_WHEELS = function(vehicle) return invoker.call(0xDCA174A42133F08C, vehicle).bool end,
	---  
	GET_IS_WHEELS_RETRACTED = function(vehicle) return invoker.call(0x1DA0DA9CB3F0C8BF, vehicle).bool end,
	---  
	SET_WHEELS_EXTENDED_INSTANTLY = function(vehicle) invoker.call(0xF660602546D27BA8, vehicle) end,
	---  
	SET_WHEELS_RETRACTED_INSTANTLY = function(vehicle) invoker.call(0x5335BE58C083E74E, vehicle) end,
	---Returns true if the vehicle has the FLAG_JUMPING_CAR flag set.  
	GET_CAR_HAS_JUMP = function(vehicle) return invoker.call(0x9078C0C5EF8C19E9, vehicle).bool end,
	---Allows vehicles with the FLAG_JUMPING_CAR flag to jump higher (i.e. Ruiner 2000).  
	SET_USE_HIGHER_CAR_JUMP = function(vehicle, toggle) invoker.call(0xF06A16CA55D138D8, vehicle, toggle) end,
	---  
	SET_CLEAR_FREEZE_WAITING_ON_COLLISION_ONCE_PLAYER_ENTERS = function(vehicle, toggle) invoker.call(0xB2E0C0D6922D31F2, vehicle, toggle) end,
	---Set vehicle's primary mounted weapon 2 ammo. For example, use it on APC.  
	---For example, you can "remove" any vehicle weapon from any vehicle.  
	---ammoAmount -1 = infinite ammo (default value for any spawned vehicle tho)  
	SET_VEHICLE_WEAPON_RESTRICTED_AMMO = function(vehicle, weaponIndex, capacity) invoker.call(0x44CD1F493DB2A0A6, vehicle, weaponIndex, capacity) end,
	---  
	GET_VEHICLE_WEAPON_RESTRICTED_AMMO = function(vehicle, weaponIndex) return invoker.call(0x8181CE2F25CB9BB7, vehicle, weaponIndex).int end,
	---  
	GET_VEHICLE_HAS_PARACHUTE = function(vehicle) return invoker.call(0xBC9CFF381338CB4F, vehicle).bool end,
	---  
	GET_VEHICLE_CAN_DEPLOY_PARACHUTE = function(vehicle) return invoker.call(0xA916396DF4154EE3, vehicle).bool end,
	---  
	VEHICLE_START_PARACHUTING = function(vehicle, active) invoker.call(0x0BFFB028B3DD0A97, vehicle, active) end,
	---  
	IS_VEHICLE_PARACHUTE_DEPLOYED = function(vehicle) return invoker.call(0x3DE51E9C80B116CF, vehicle).bool end,
	---  
	VEHICLE_SET_RAMP_AND_RAMMING_CARS_TAKE_DAMAGE = function(vehicle, toggle) invoker.call(0x28D034A93FE31BF5, vehicle, toggle) end,
	---  
	VEHICLE_SET_ENABLE_RAMP_CAR_SIDE_IMPULSE = function(p0, p1) invoker.call(0x1BBAC99C0BC53656, p0, p1) end,
	---  
	VEHICLE_SET_ENABLE_NORMALISE_RAMP_CAR_VERTICAL_VELOCTIY = function(p0, p1) invoker.call(0x756AE6E962168A04, p0, p1) end,
	---  
	VEHICLE_SET_JET_WASH_FORCE_ENABLED = function(p0) invoker.call(0x9D30687C57BAA0BB, p0) end,
	---  
	SET_VEHICLE_WEAPON_CAN_TARGET_OBJECTS = function(vehicle, toggle) invoker.call(0x86B4B6212CB8B627, vehicle, toggle) end,
	---Used for blazer5. Changes the quadbike-jetski transformation input from raise/lower convertible roof (hold H by default) to horn (press E by default.)  
	SET_VEHICLE_USE_BOOST_BUTTON_FOR_WHEEL_RETRACT = function(toggle) invoker.call(0x41290B40FA63E6DA, toggle) end,
	---  
	_SET_VEHICLE_USE_HORN_BUTTON_FOR_NITROUS = function(toggle) invoker.call(0x1980F68872CC2C3D, toggle) end,
	---Parachute models:  
	---- sr_prop_specraces_para_s_01  
	---- imp_prop_impexp_para_s (SecuroServ; Default)  
	---Plus, many more props can be used as vehicle parachutes, like umbrellas (prop_beach_parasol_03), and unlike SET_PLAYER_PARACHUTE_MODEL_OVERRIDE, you won't get stuck mid-air when using an umbrella.  
	VEHICLE_SET_PARACHUTE_MODEL_OVERRIDE = function(vehicle, modelHash) invoker.call(0x4D610C6B56031351, vehicle, modelHash) end,
	---Variations available for the generic parachute (sr_prop_specraces_para_s_01):  
	---- 0: Rainbow  
	---- 1: Red  
	---- 2: White, blue, yellow  
	---- 3: Black, red, white  
	---- 4: Red, white, blue  
	---- 5: Blue  
	---- 6: Black  
	---- 7: Black, yellow  
	VEHICLE_SET_PARACHUTE_MODEL_TINT_INDEX = function(vehicle, textureVariation) invoker.call(0xA74AD2439468C883, vehicle, textureVariation) end,
	---  
	VEHICLE_SET_OVERRIDE_EXTENABLE_SIDE_RATIO = function(p0, p1) return invoker.call(0x0419B167EE128F33, p0, p1).int end,
	---  
	VEHICLE_SET_EXTENABLE_SIDE_TARGET_RATIO = function(p0, p1) return invoker.call(0xF3B0E0AED097A3F5, p0, p1).int end,
	---  
	VEHICLE_SET_OVERRIDE_SIDE_RATIO = function(p0, p1) return invoker.call(0xD3E51C0AB8C26EEE, p0, p1).int end,
	---  
	GET_ALL_VEHICLES = function(vehsStruct) return invoker.call(0x9B8E1BF04B51F2E8, vehsStruct).int end,
	---  
	SET_CARGOBOB_EXTA_PICKUP_RANGE = function(p0, p1) invoker.call(0x72BECCF4B829522E, p0, p1) end,
	---  
	SET_OVERRIDE_VEHICLE_DOOR_TORQUE = function(p0, p1, p2) invoker.call(0x66E3AAFACE2D1EB8, p0, p1, p2) end,
	---Enables/disables the ability to wheelie on motorcycles.  
	SET_WHEELIE_ENABLED = function(vehicle, enabled) invoker.call(0x1312DDD8385AEE4E, vehicle, enabled) end,
	---Prevents the vehicle from exploding when taking body damage. Only works for helis and planes.  
	SET_DISABLE_HELI_EXPLODE_FROM_BODY_DAMAGE = function(vehicle, disable) invoker.call(0xEDBC8405B3895CC9, vehicle, disable) end,
	---Prevents the vehicle from exploding when taking body damage if it was caused by a collision. Only works for planes.  
	SET_DISABLE_EXPLODE_FROM_BODY_DAMAGE_ON_COLLISION = function(vehicle, disable) invoker.call(0x26E13D440E7F6064, vehicle, disable) end,
	---Prevents the vehicle from exploding when taking body damage if the inflictor is an AI-controlled vehicle. Only works for planes.  
	_SET_DISABLE_EXPLODE_FROM_BODY_DAMAGE_RECEIVED_BY_AI_VEHICLE = function(vehicle, disable) invoker.call(0xB0B7DF5CB876FF5E, vehicle, disable) end,
	---  
	SET_TRAILER_ATTACHMENT_ENABLED = function(p0, p1) invoker.call(0x2FA2494B47FDD009, p0, p1) end,
	---  
	SET_ROCKET_BOOST_FILL = function(vehicle, percentage) invoker.call(0xFEB2DDED3509562E, vehicle, percentage) end,
	---Set state to true to extend the wings, false to retract them.  
	SET_GLIDER_ACTIVE = function(vehicle, state) invoker.call(0x544996C0081ABDEB, vehicle, state) end,
	---Resets the vehicle's turret to its default position in scripted cameras. Doesn't seem to affect turrets that are occupied by a ped.  
	SET_SHOULD_RESET_TURRET_IN_SCRIPTED_CAMERAS = function(vehicle, shouldReset) invoker.call(0x78CEEE41F49F421F, vehicle, shouldReset) end,
	---  
	SET_VEHICLE_DISABLE_COLLISION_UPON_CREATION = function(vehicle, disable) invoker.call(0xAF60E6A2936F982A, vehicle, disable) end,
	---  
	SET_GROUND_EFFECT_REDUCES_DRAG = function(toggle) invoker.call(0x430A7631A84C9BE7, toggle) end,
	---Disables collision for this vehicle (maybe it also supports other entities, not sure).  
	---Only world/building/fixed world objects will have their collisions disabled, props, peds, or any other entity still collides with the vehicle.  
	---Example: https://streamable.com/6n45d5  
	---Not sure if there is a native (and if so, which one) that resets the collisions.  
	SET_DISABLE_MAP_COLLISION = function(vehicle) invoker.call(0x75627043C6AA90AD, vehicle) end,
	---  
	SET_DISABLE_PED_STAND_ON_TOP = function(vehicle, toggle) invoker.call(0x8235F1BEAD557629, vehicle, toggle) end,
	---  
	SET_VEHICLE_DAMAGE_SCALES = function(vehicle, p1, p2, p3, p4) invoker.call(0x9640E30A7F395E4B, vehicle, p1, p2, p3, p4) end,
	---  
	SET_PLANE_SECTION_DAMAGE_SCALE = function(vehicle, p1, p2) invoker.call(0x0BBB9A7A8FFE931B, vehicle, p1, p2) end,
	---  
	SET_PLANE_CONTROL_SECTIONS_SHOULD_BREAK_OFF_FROM_EXPLOSIONS = function(vehicle, toggle) invoker.call(0xDD8A2D3337F04196, vehicle, toggle) end,
	---Stops the cargobob from being able to attach any vehicle  
	SET_HELI_CAN_PICKUP_ENTITY_THAT_HAS_PICK_UP_DISABLED = function(vehicle, toggle) invoker.call(0x94A68DA412C4007D, vehicle, toggle) end,
	---Sets the amount of bombs that this vehicle has. As far as I know, this does _not_ impact vehicle weapons or the ammo of those weapons in any way, it is just a way to keep track of the amount of bombs in a specific plane.  
	SET_VEHICLE_BOMB_AMMO = function(vehicle, bombCount) invoker.call(0xF4B2ED59DEB5D774, vehicle, bombCount) end,
	---Gets the amount of bombs that this vehicle has. As far as I know, this does _not_ impact vehicle weapons or the ammo of those weapons in any way, it is just a way to keep track of the amount of bombs in a specific plane.  
	GET_VEHICLE_BOMB_AMMO = function(vehicle) return invoker.call(0xEA12BD130D7569A1, vehicle).int end,
	---Similar to SET_VEHICLE_BOMB_AMMO, this sets the amount of countermeasures that are present on this vehicle.  
	---Use GET_VEHICLE_BOMB_AMMO to get the current amount.  
	SET_VEHICLE_COUNTERMEASURE_AMMO = function(vehicle, counterMeasureCount) invoker.call(0x9BDA23BF666F0855, vehicle, counterMeasureCount) end,
	---Similar to `GET_VEHICLE_BOMB_AMMO`, this gets the amount of countermeasures that are present on this vehicle.  
	---Use SET_VEHICLE_COUNTERMEASURE_AMMO to set the current amount.  
	GET_VEHICLE_COUNTERMEASURE_AMMO = function(vehicle) return invoker.call(0xF846AA63DF56B804, vehicle).int end,
	---  
	SET_HELI_COMBAT_OFFSET = function(vehicle, x, y, z) invoker.call(0x0A3F820A9A9A9AC5, vehicle, x, y, z) end,
	---Used in decompiled scripts in combination with GET_VEHICLE_SIZE  
	---p7 is usually 2  
	---p8 is usually 1  
	GET_CAN_VEHICLE_BE_PLACED_HERE = function(vehicle, x, y, z, rotX, rotY, rotZ, p7, p8) return invoker.call(0x51F30DB60626A20E, vehicle, x, y, z, rotX, rotY, rotZ, p7, p8).bool end,
	---Sets a flag on heli and another vehicle type.  
	SET_DISABLE_AUTOMATIC_CRASH_TASK = function(vehicle, toggle) invoker.call(0x97841634EF7DF1D6, vehicle, toggle) end,
	---Used in conjunction with SET_SPECIAL_FLIGHT_MODE_TARGET_RATIO, in Rockstar's scripts. Using this will instantly transform the vehicle into hover mode starting from the given ratio (ranging from 0.0 to 1.0, values greater than 1.0 will put the vehicle into a glitched state.) If this is not used alongside SET_SPECIAL_FLIGHT_MODE_TARGET_RATIO, the vehicle will automatically transform back into car mode.  
	---  
	---Usable only with the deluxo and other vehicles with deluxo-like hover mode toggle, modded or otherwise. Does nothing when used on oppressor2.  
	---  
	---Example:  
	---Ped playerPed = PLAYER::PLAYER_PED_ID();  
	---Vehicle veh = PED::GET_VEHICLE_PED_IS_USING(playerPed);  
	---VEHICLE::SET_SPECIAL_FLIGHT_MODE_RATIO(veh, 0.7f);  
	---VEHICLE::SET_SPECIAL_FLIGHT_MODE_TARGET_RATIO(veh, 1.0f);  
	SET_SPECIAL_FLIGHT_MODE_RATIO = function(vehicle, ratio) invoker.call(0xD138FA15C9776837, vehicle, ratio) end,
	---Used in conjunction with SET_SPECIAL_FLIGHT_MODE_RATIO, in Rockstar's scripts. The vehicle will transform into the given targetRatio, starting from the vehicle's current hover mode transform ratio (which can also be manually set by SET_SPECIAL_FLIGHT_MODE_RATIO,) i.e. setting targetRatio to 0.0 while the vehicle is in hover mode will transform the vehicle into car mode, likewise setting targetRatio to 1.0 while the vehicle is in car mode will transform the vehicle into hover mode, and if the current transform ratio is set to 0.7 while targetRatio is 1.0 the vehicle will transform into hover mode starting from being already partially transformed.  
	---  
	---targetRatio is recommended to always be 0.0 or 1.0, otherwise the vehicle will transform into a glitched state.  
	---  
	---Usable only with the deluxo and other vehicles with deluxo-like hover mode toggle, modded or otherwise. Does nothing when used on oppressor2.  
	---  
	---Example:  
	---Ped playerPed = PLAYER::PLAYER_PED_ID();  
	---Vehicle veh = PED::GET_VEHICLE_PED_IS_USING(playerPed);  
	---VEHICLE::SET_SPECIAL_FLIGHT_MODE_RATIO(veh, 0.7f);  
	---VEHICLE::SET_SPECIAL_FLIGHT_MODE_TARGET_RATIO(veh, 1.0f);  
	SET_SPECIAL_FLIGHT_MODE_TARGET_RATIO = function(vehicle, targetRatio) invoker.call(0x438B3D7CA026FE91, vehicle, targetRatio) end,
	---It will override the ability to transform deluxo. For oppressor it will work just like SET_DISABLE_HOVER_MODE_FLIGHT  
	SET_SPECIAL_FLIGHT_MODE_ALLOWED = function(vehicle, toggle) invoker.call(0xF1211889DF15A763, vehicle, toggle) end,
	---Disables "wings" for some flying vehicles. Works only for oppressor _2_ and deluxo.  
	---For deluxo it just immediately removes vehicle's "wings" and you will be not able to fly up.  
	---For oppressor 2 it will remove wings right after you land. And you will not able to fly up anymore too.  
	---But for opressor 2 you still can fly if you somehow get back in the air.  
	SET_DISABLE_HOVER_MODE_FLIGHT = function(vehicle, toggle) invoker.call(0x2D55FE374D5FDB91, vehicle, toggle) end,
	---Checks if Chernobog's stabilizers are deployed or not.  
	---These are the metal supports that allow it to fire.  
	---This native only applies to the Chernobog.  
	GET_OUTRIGGERS_DEPLOYED = function(vehicle) return invoker.call(0x3A9128352EAC9E85, vehicle).bool end,
	---Native is significantly more complicated than simply generating a random vector & length.  
	---The 'point' is either 400.0 or 250.0 units away from the Ped's current coordinates; and paths into functions like rage::grcViewport___IsSphereVisible  
	FIND_SPAWN_COORDINATES_FOR_HELI = function(ped) return invoker.call(0x8DC9675797123522, ped).scr_vec3 end,
	---Only used with the "akula" and "annihilator2" in the decompiled native scripts.  
	SET_DEPLOY_FOLDING_WINGS = function(vehicle, deploy, p2) invoker.call(0xB251E0B33E58B424, vehicle, deploy, p2) end,
	---Only used with the "akula" and "annihilator2" in the decompiled native scripts.  
	ARE_FOLDING_WINGS_DEPLOYED = function(vehicle) return invoker.call(0xAEF12960FA943792, vehicle).bool end,
	---  
	_SET_DEPLOY_MISSILE_BAYS = function(vehicle, deploy) invoker.call(0x0C02468829E4AA65, vehicle, deploy) end,
	---  
	_ARE_MISSILE_BAYS_DEPLOYED = function(vehicle) return invoker.call(0xEA4743874D515F13, vehicle).bool end,
	---  
	SET_DIP_STRAIGHT_DOWN_WHEN_CRASHING_PLANE = function(vehicle, toggle) invoker.call(0xAA653AE61924B0A0, vehicle, toggle) end,
	---Toggles specific flag on turret  
	SET_TURRET_HIDDEN = function(vehicle, index, toggle) invoker.call(0xC60060EB0D8AC7B1, vehicle, index, toggle) end,
	---  
	SET_HOVER_MODE_WING_RATIO = function(vehicle, ratio) invoker.call(0x70A252F60A3E036B, vehicle, ratio) end,
	---Disables turret movement when called in a loop. You can still fire and aim. You cannot shoot backwards though.  
	SET_DISABLE_TURRET_MOVEMENT = function(vehicle, turretId) invoker.call(0xE615BB7A7752C76A, vehicle, turretId) end,
	---  
	SET_FORCE_FIX_LINK_MATRICES = function(vehicle) invoker.call(0x887FA38787DE8C72, vehicle) end,
	---Affects the playback speed of the submarine car conversion animations. Does not affect hardcoded animations such as the wheels being retracted.  
	SET_TRANSFORM_RATE_FOR_ANIMATION = function(vehicle, transformRate) invoker.call(0x498218259FB7C72D, vehicle, transformRate) end,
	---When set to true, the key to transform a car to submarine mode changes from raise/lower convertible roof (hold H by default) to special vehicle transform (press X by default.)  
	SET_TRANSFORM_TO_SUBMARINE_USES_ALTERNATE_INPUT = function(vehicle, toggle) invoker.call(0x41B9FB92EDED32A6, vehicle, toggle) end,
	---Does nothing. It's a nullsub.  
	SET_VEHICLE_COMBAT_MODE = function(toggle) invoker.call(0x36DE109527A2C0C4, toggle) end,
	---Does nothing. It's a nullsub.  
	SET_VEHICLE_DETONATION_MODE = function(toggle) invoker.call(0x82E0AC411E41A5B4, toggle) end,
	---Does nothing. It's a nullsub.  
	SET_VEHICLE_SHUNT_ON_STICK = function(toggle) invoker.call(0x99A05839C46CE316, toggle) end,
	---  
	_IS_VEHICLE_ON_BOOST_PAD = function(vehicle) return invoker.call(0x71C6302CBCA6CA35, vehicle).bool end,
	---  
	GET_IS_VEHICLE_SHUNTING = function(vehicle) return invoker.call(0xA2459F72C14E2E8D, vehicle).bool end,
	---  
	GET_HAS_VEHICLE_BEEN_HIT_BY_SHUNT = function(vehicle) return invoker.call(0xE8718FAF591FD224, vehicle).bool end,
	---Returns last vehicle that was rammed by the given vehicle using the shunt boost.  
	GET_LAST_SHUNT_VEHICLE = function(vehicle) return invoker.call(0x04F2FA6E234162F7, vehicle).int end,
	---  
	SET_DISABLE_VEHICLE_EXPLOSIONS_DAMAGE = function(toggle) invoker.call(0x143921E45EC44D62, toggle) end,
	---  
	SET_OVERRIDE_NITROUS_LEVEL = function(vehicle, toggle, level, power, rechargeTime, disableSound) invoker.call(0xC8E9B6B71B8E660D, vehicle, toggle, level, power, rechargeTime, disableSound) end,
	---  
	_SET_NITROUS_IS_VISIBLE = function(vehicle, enabled) invoker.call(0x465EEA70AF251045, vehicle, enabled) end,
	---  
	_SET_OVERRIDE_TRACTION_LOSS_MULTIPLIER = function(vehicle, modifier) invoker.call(0xAFD262ACCA64479A, vehicle, modifier) end,
	---First two floats relate to rumble, the last is a threshold  
	_SET_DRIFT_SLIP_ANGLE_LIMITS = function(vehicle, durationScalar, amplitudeScalar, slipAngleLimit) invoker.call(0xDAF4C98C18AC6F06, vehicle, durationScalar, amplitudeScalar, slipAngleLimit) end,
	---  
	_SET_MINIMUM_TIME_BETWEEN_GEAR_SHIFTS = function(vehicle, time) invoker.call(0x16CFBC5E7EB32861, vehicle, time) end,
	---  
	FULLY_CHARGE_NITROUS = function(vehicle) invoker.call(0x1A2BCC8C636F9226, vehicle) end,
	---  
	_SET_REMAINING_NITROUS_DURATION = function(vehicle, duration) invoker.call(0x1AD0F63A94E10EFF, vehicle, duration) end,
	---  
	_GET_REMAINING_NITROUS_DURATION = function(vehicle) return invoker.call(0xBEC4B8653462450E, vehicle).float end,
	---  
	IS_NITROUS_ACTIVE = function(vehicle) return invoker.call(0x491E822B2C464FE4, vehicle).bool end,
	---  
	CLEAR_NITROUS = function(vehicle) invoker.call(0xC889AE921400E1ED, vehicle) end,
	---  
	SET_NITROUS_IS_ACTIVE = function(vehicle, toggle) invoker.call(0x9E566EA551F4F1A6, vehicle, toggle) end,
	---  
	SET_INCREASE_WHEEL_CRUSH_DAMAGE = function(vehicle, toggle) invoker.call(0x2970EAA18FD5E42F, vehicle, toggle) end,
	---Sets some global vehicle related bool  
	SET_DISABLE_WEAPON_BLADE_FORCES = function(toggle) invoker.call(0x211E95CE9903940C, toggle) end,
	---Changes the car jump control to require a double-tap to activate.  
	SET_USE_DOUBLE_CLICK_FOR_CAR_JUMP = function(toggle) invoker.call(0x5BBCF35BF6E456F7, toggle) end,
	---Returns true only if the "tombstone" bone is attached to the vehicle, irrespective of "FLAG_HAS_TOMBSTONE" being present or not. Detaching the tombstone will return false.  
	GET_DOES_VEHICLE_HAVE_TOMBSTONE = function(vehicle) return invoker.call(0x71AFB258CCED3A27, vehicle).bool end,
	---Disables detachable bumber from domnator4, dominator5, dominator6, see https://gfycat.com/SecondUnluckyGosling  
	HIDE_TOMBSTONE = function(vehicle, toggle) invoker.call(0xAE71FB656C600587, vehicle, toggle) end,
	---  
	APPLY_EMP_EFFECT = function(vehicle) invoker.call(0x249249D74F813EB2, vehicle) end,
	---Returns whether this vehicle is currently disabled by an EMP mine.  
	GET_IS_VEHICLE_DISABLED_BY_EMP = function(vehicle) return invoker.call(0x0506ED94363AD905, vehicle).bool end,
	---  
	SET_DISABLE_RETRACTING_WEAPON_BLADES = function(toggle) invoker.call(0x8F0D5BA1C2CC91D7, toggle) end,
	---Usable wheels:  
	---0: wheel_lf  
	---1: wheel_rf  
	---2: wheel_lm1  
	---3: wheel_rm1  
	---4: wheel_lr  
	---5: wheel_rr  
	GET_TYRE_HEALTH = function(vehicle, wheelIndex) return invoker.call(0x55EAB010FAEE9380, vehicle, wheelIndex).float end,
	---SET_TYRE_WEAR_RATE must be active, otherwise values set to <1000.0f will default to 350.0f  
	---  
	---Usable wheels:  
	---0: wheel_lf  
	---1: wheel_rf  
	---2: wheel_lm1  
	---3: wheel_rm1  
	---4: wheel_lr  
	---5: wheel_rr  
	SET_TYRE_HEALTH = function(vehicle, wheelIndex, health) invoker.call(0x74C68EF97645E79D, vehicle, wheelIndex, health) end,
	---Returns the multiplier value from SET_TYRE_WEAR_RATE  
	---  
	---Usable wheels:  
	---0: wheel_lf  
	---1: wheel_rf  
	---2: wheel_lm1  
	---3: wheel_rm1  
	---4: wheel_lr  
	---5: wheel_rr  
	GET_TYRE_WEAR_RATE = function(vehicle, wheelIndex) return invoker.call(0x6E387895952F4F71, vehicle, wheelIndex).float end,
	---Needs to be run for tire wear to work. Multiplier affects the downforce and how fast the tires will wear out, higher values essentially make the vehicle slower on straights and its tires will wear down quicker when cornering. Value must be >0f.  
	---Default value in Rockstar's Open Wheel Race JSON's ("owrtws", "owrtwm", "owrtwh") is 1.0  
	---  
	---Usable wheels:  
	---0: wheel_lf  
	---1: wheel_rf  
	---2: wheel_lm1  
	---3: wheel_rm1  
	---4: wheel_lr  
	---5: wheel_rr  
	SET_TYRE_WEAR_RATE = function(vehicle, wheelIndex, multiplier) invoker.call(0x01894E2EDE923CA2, vehicle, wheelIndex, multiplier) end,
	---Controls how fast the tires wear out.  
	---  
	---Default values from Rockstar's Open Wheel Race JSON's:  
	---"owrtss" (Soft): 2.2  
	---"owrtsm" (Medium): 1.7  
	---"owrtsh" (Hard): 1.2  
	---  
	---Usable wheels:  
	---0: wheel_lf  
	---1: wheel_rf  
	---2: wheel_lm1  
	---3: wheel_rm1  
	---4: wheel_lr  
	---5: wheel_rr  
	SET_TYRE_WEAR_RATE_SCALE = function(vehicle, wheelIndex, multiplier) invoker.call(0x392183BB9EA57697, vehicle, wheelIndex, multiplier) end,
	---Controls how much traction the wheel loses.  
	---  
	---Default values from Rockstar's Open Wheel Race JSON's:  
	---"owrtds" (Soft): 0.05  
	---"owrtdm" (Medium): 0.45  
	---"owrtdh" (Hard): 0.8  
	---  
	---Usable wheels:  
	---0: wheel_lf  
	---1: wheel_rf  
	---2: wheel_lm1  
	---3: wheel_rm1  
	---4: wheel_lr  
	---5: wheel_rr  
	SET_TYRE_MAXIMUM_GRIP_DIFFERENCE_DUE_TO_WEAR_RATE = function(vehicle, wheelIndex, multiplier) invoker.call(0xC970D0E0FC31D768, vehicle, wheelIndex, multiplier) end,
	---  
	SET_AIRCRAFT_IGNORE_HIGHTMAP_OPTIMISATION = function(vehicle, p1) invoker.call(0xF8B49F5BA7F850E7, vehicle, p1) end,
	---Lowers the vehicle's stance. Only works for vehicles that have strAdvancedFlags 0x8000 and 0x4000000 set.  
	SET_REDUCED_SUSPENSION_FORCE = function(vehicle, enable) invoker.call(0x3A375167F5782A65, vehicle, enable) end,
	---  
	SET_DRIFT_TYRES = function(vehicle, toggle) invoker.call(0x5AC79C98C5C17F05, vehicle, toggle) end,
	---  
	GET_DRIFT_TYRES_SET = function(vehicle) return invoker.call(0x2F5A72430E78C8D3, vehicle).bool end,
	---Implemented only for trains.  
	NETWORK_USE_HIGH_PRECISION_TRAIN_BLENDING = function(vehicle, toggle) invoker.call(0xEC0C1D4922AF9754, vehicle, toggle) end,
	---Only used in R* Script fm_content_cargo  
	SET_CHECK_FOR_ENOUGH_ROOM_FOR_PED = function(vehicle, p1) invoker.call(0xEF9D388F8D377F44, vehicle, p1) end,
	---_SET_ALLOW_R* - _SET_ALLOW_V*  
	_SET_ALLOW_COLLISION_WHEN_IN_VEHICLE = function(vehicle, toggle) invoker.call(0x27D27223E8EF22ED, vehicle, toggle) end,
	---  
	_GET_VEHICLE_MAX_EXHAUST_BONE_COUNT = function() return invoker.call(0x3EE18B00CD86C54F).int end,
	---  
	_GET_VEHICLE_EXHAUST_BONE = function(vehicle, index, boneIndex, axisX) return invoker.call(0xE728F090D538CB18, vehicle, index, boneIndex, axisX).bool end,
}
WATER={
	---This function set height to the value of z-axis of the water surface.  
	---  
	---This function works with sea and lake. However it does not work with shallow rivers (e.g. raton canyon will return -100000.0f)  
	---  
	---note: seems to return true when you are in water  
	GET_WATER_HEIGHT = function(x, y, z, height) return invoker.call(0xF6829842C06AE524, x, y, z, height).bool end,
	---  
	GET_WATER_HEIGHT_NO_WAVES = function(x, y, z, height) return invoker.call(0x8EE6B53CE13A9794, x, y, z, height).bool end,
	---  
	TEST_PROBE_AGAINST_WATER = function(x1, y1, z1, x2, y2, z2, result) return invoker.call(0xFFA5D878809819DB, x1, y1, z1, x2, y2, z2, result).bool end,
	---enum eScriptWaterTestResult  
	---{  
	---	SCRIPT_WATER_TEST_RESULT_NONE,  
	---	SCRIPT_WATER_TEST_RESULT_WATER,  
	---	SCRIPT_WATER_TEST_RESULT_BLOCKED,  
	---};  
	TEST_PROBE_AGAINST_ALL_WATER = function(x1, y1, z1, x2, y2, z2, flags, waterHeight) return invoker.call(0x8974647ED222EA5F, x1, y1, z1, x2, y2, z2, flags, waterHeight).int end,
	---See TEST_PROBE_AGAINST_ALL_WATER.  
	TEST_VERTICAL_PROBE_AGAINST_ALL_WATER = function(x, y, z, flags, waterHeight) return invoker.call(0x2B3451FA1E3142E2, x, y, z, flags, waterHeight).int end,
	---Sets the water height for a given position and radius.  
	---  
	MODIFY_WATER = function(x, y, radius, height) invoker.call(0xC443FD757C3BA637, x, y, radius, height) end,
	---  
	ADD_EXTRA_CALMING_QUAD = function(xLow, yLow, xHigh, yHigh, height) return invoker.call(0xFDBF4CDBC07E1706, xLow, yLow, xHigh, yHigh, height).int end,
	---p0 is the handle returned from ADD_EXTRA_CALMING_QUAD  
	REMOVE_EXTRA_CALMING_QUAD = function(calmingQuad) invoker.call(0xB1252E3E59A82AAF, calmingQuad) end,
	---Sets a value that determines how aggressive the ocean waves will be. Values of 2.0 or more make for very aggressive waves like you see during a thunderstorm.  
	---  
	---Works only ~200 meters around the player.  
	SET_DEEP_OCEAN_SCALER = function(intensity) invoker.call(0xB96B00E976BE977F, intensity) end,
	---Gets the aggressiveness factor of the ocean waves.  
	GET_DEEP_OCEAN_SCALER = function() return invoker.call(0x2B2A2CC86778B619).float end,
	---  
	SET_CALMED_WAVE_HEIGHT_SCALER = function(height) invoker.call(0x547237AA71AB44DE, height) end,
	---Sets the waves intensity back to original (1.0 in most cases).  
	RESET_DEEP_OCEAN_SCALER = function() invoker.call(0x5E5E99285AE812DB) end,
}
WEAPON={
	---Enables laser sight on any weapon.  
	---  
	---It doesn't work. Neither on tick nor OnKeyDown  
	ENABLE_LASER_SIGHT_RENDERING = function(toggle) invoker.call(0xC8B46D7727D864AA, toggle) end,
	---  
	GET_WEAPON_COMPONENT_TYPE_MODEL = function(componentHash) return invoker.call(0x0DB57B41EC1DB083, componentHash).int end,
	---Returns the model of any weapon.  
	---  
	---Can also take an ammo hash?  
	---sub_6663a(&l_115B, WEAPON::GET_WEAPONTYPE_MODEL(${ammo_rpg}));  
	GET_WEAPONTYPE_MODEL = function(weaponHash) return invoker.call(0xF46CDC33180FDA94, weaponHash).int end,
	---  
	GET_WEAPONTYPE_SLOT = function(weaponHash) return invoker.call(0x4215460B9B8B7FA0, weaponHash).int end,
	---  
	GET_WEAPONTYPE_GROUP = function(weaponHash) return invoker.call(0xC3287EE3050FB74C, weaponHash).int end,
	---Returns the amount of extra components the specified component has.  
	---Returns -1 if the component isn't of type CWeaponComponentVariantModel.  
	GET_WEAPON_COMPONENT_VARIANT_EXTRA_COUNT = function(componentHash) return invoker.call(0x6558AC7C17BFEF58, componentHash).int end,
	---Returns the model hash of the extra component at specified index.  
	GET_WEAPON_COMPONENT_VARIANT_EXTRA_MODEL = function(componentHash, extraComponentIndex) return invoker.call(0x4D1CB8DC40208A17, componentHash, extraComponentIndex).int end,
	---Full list of weapons by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json  
	SET_CURRENT_PED_WEAPON = function(ped, weaponHash, bForceInHand) invoker.call(0xADF692B254977C0C, ped, weaponHash, bForceInHand) end,
	---The return value seems to indicate returns true if the hash of the weapon object weapon equals the weapon hash.  
	---p2 seems to be 1 most of the time.  
	---  
	---  
	---  
	---  
	---  
	---p2 is not implemented  
	---  
	---disassembly said that?  
	---  
	GET_CURRENT_PED_WEAPON = function(ped, weaponHash, p2) return invoker.call(0x3A87E44BB9A01D54, ped, weaponHash, p2).bool end,
	---  
	GET_CURRENT_PED_WEAPON_ENTITY_INDEX = function(ped, p1) return invoker.call(0x3B390A939AF0B5FC, ped, p1).int end,
	---p1 is always 0 in the scripts.  
	GET_BEST_PED_WEAPON = function(ped, p1) return invoker.call(0x8483E98E8B888AE2, ped, p1).int end,
	---Full list of weapons by DurtyFree (Search for VEHICLE_*): https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json  
	SET_CURRENT_PED_VEHICLE_WEAPON = function(ped, weaponHash) return invoker.call(0x75C55983C2C39DAA, ped, weaponHash).bool end,
	---Example in VB  
	---  
	---    Public Shared Function GetVehicleCurrentWeapon(Ped As Ped) As Integer  
	---        Dim arg As New OutputArgument()  
	---        Native.Function.Call(Hash.GET_CURRENT_PED_VEHICLE_WEAPON, Ped, arg)  
	---        Return arg.GetResult(Of Integer)()  
	---    End Function  
	---  
	---Usage:  
	---If GetVehicleCurrentWeapon(Game.Player.Character) = -821520672 Then ...Do something  
	---Note: -821520672 = VEHICLE_WEAPON_PLANE_ROCKET  
	GET_CURRENT_PED_VEHICLE_WEAPON = function(ped, weaponHash) return invoker.call(0x1017582BCD3832DC, ped, weaponHash).bool end,
	---  
	SET_PED_CYCLE_VEHICLE_WEAPONS_ONLY = function(ped) invoker.call(0x50276EF8172F5F12, ped) end,
	---Checks if the ped is currently equipped with a weapon matching a bit specified using a bitwise-or in typeFlags.  
	---  
	---Type flag bit values:  
	---1 = Melee weapons  
	---2 = Explosive weapons  
	---4 = Any other weapons  
	---  
	---Not specifying any bit will lead to the native *always* returning 'false', and for example specifying '4 | 2' will check for any weapon except fists and melee weapons.  
	---7 returns true if you are equipped with any weapon except your fists.  
	---6 returns true if you are equipped with any weapon except melee weapons.  
	---5 returns true if you are equipped with any weapon except the Explosives weapon group.  
	---4 returns true if you are equipped with any weapon except Explosives weapon group AND melee weapons.  
	---3 returns true if you are equipped with either Explosives or Melee weapons (the exact opposite of 4).  
	---2 returns true only if you are equipped with any weapon from the Explosives weapon group.  
	---1 returns true only if you are equipped with any Melee weapon.  
	---0 never returns true.  
	---  
	---Note: When I say "Explosives weapon group", it does not include the Jerry can and Fire Extinguisher.  
	IS_PED_ARMED = function(ped, typeFlags) return invoker.call(0x475768A975D5AD17, ped, typeFlags).bool end,
	---Full list of weapons by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json  
	IS_WEAPON_VALID = function(weaponHash) return invoker.call(0x937C71165CF334B3, weaponHash).bool end,
	---p2 should be FALSE, otherwise it seems to always return FALSE  
	---  
	---Bool does not check if the weapon is current equipped, unfortunately.  
	---Full list of weapons by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json  
	HAS_PED_GOT_WEAPON = function(ped, weaponHash, p2) return invoker.call(0x8DECB02F88F428BC, ped, weaponHash, p2).bool end,
	---  
	IS_PED_WEAPON_READY_TO_SHOOT = function(ped) return invoker.call(0xB80CA294F2F26749, ped).bool end,
	---  
	GET_PED_WEAPONTYPE_IN_SLOT = function(ped, weaponSlot) return invoker.call(0xEFFED78E9011134D, ped, weaponSlot).int end,
	---WEAPON::GET_AMMO_IN_PED_WEAPON(PLAYER::PLAYER_PED_ID(), a_0)  
	---  
	---From decompiled scripts  
	---Returns total ammo in weapon  
	---  
	---GTALua Example :  
	---natives.WEAPON.GET_AMMO_IN_PED_WEAPON(plyPed, WeaponHash)  
	---Full list of weapons by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json  
	GET_AMMO_IN_PED_WEAPON = function(ped, weaponhash) return invoker.call(0x015A522136D7F951, ped, weaponhash).int end,
	---Full list of weapons by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json  
	ADD_AMMO_TO_PED = function(ped, weaponHash, ammo) invoker.call(0x78F0424C34306220, ped, weaponHash, ammo) end,
	---Full list of weapons by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json  
	SET_PED_AMMO = function(ped, weaponHash, ammo, p3) invoker.call(0x14E56BC5B5DB6A19, ped, weaponHash, ammo, p3) end,
	---Full list of weapons by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json  
	SET_PED_INFINITE_AMMO = function(ped, toggle, weaponHash) invoker.call(0x3EDCB0505123623B, ped, toggle, weaponHash) end,
	---  
	SET_PED_INFINITE_AMMO_CLIP = function(ped, toggle) invoker.call(0x183DADC6AA953186, ped, toggle) end,
	---  
	SET_PED_STUN_GUN_FINITE_AMMO = function(p0, p1) invoker.call(0x24C024BA8379A70A, p0, p1) end,
	---Full list of weapons by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json  
	GIVE_WEAPON_TO_PED = function(ped, weaponHash, ammoCount, isHidden, bForceInHand) invoker.call(0xBF0FD6E56C964FCB, ped, weaponHash, ammoCount, isHidden, bForceInHand) end,
	---Gives a weapon to PED with a delay, example:  
	---  
	---WEAPON::GIVE_DELAYED_WEAPON_TO_PED(PED::PLAYER_PED_ID(), MISC::GET_HASH_KEY("WEAPON_PISTOL"), 1000, false)  
	---Full list of weapons by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json  
	GIVE_DELAYED_WEAPON_TO_PED = function(ped, weaponHash, ammoCount, bForceInHand) invoker.call(0xB282DC6EBD803C75, ped, weaponHash, ammoCount, bForceInHand) end,
	---setting the last params to false it does that same so I would suggest its not a toggle  
	REMOVE_ALL_PED_WEAPONS = function(ped, p1) invoker.call(0xF25DF915FA38C5F3, ped, p1) end,
	---This native removes a specified weapon from your selected ped.  
	---  
	---Example:  
	---C#:  
	---Function.Call(Hash.REMOVE_WEAPON_FROM_PED, Game.Player.Character, 0x99B507EA);  
	---  
	---C++:  
	---WEAPON::REMOVE_WEAPON_FROM_PED(PLAYER::PLAYER_PED_ID(), 0x99B507EA);  
	---  
	---The code above removes the knife from the player.  
	---Full list of weapons by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json  
	REMOVE_WEAPON_FROM_PED = function(ped, weaponHash) invoker.call(0x4899CB088EDF59B8, ped, weaponHash) end,
	---Hides the players weapon during a cutscene.  
	HIDE_PED_WEAPON_FOR_SCRIPTED_CUTSCENE = function(ped, toggle) invoker.call(0x6F6981D2253C208F, ped, toggle) end,
	---Has 5 parameters since latest patches.  
	SET_PED_CURRENT_WEAPON_VISIBLE = function(ped, visible, deselectWeapon, p3, p4) invoker.call(0x0725A4CCFDED9A70, ped, visible, deselectWeapon, p3, p4) end,
	---  
	SET_PED_DROPS_WEAPONS_WHEN_DEAD = function(ped, toggle) invoker.call(0x476AE72C1D19D1A8, ped, toggle) end,
	---It determines what weapons caused damage:  
	---  
	---If you want to define only a specific weapon, second parameter=weapon hash code, third parameter=0  
	---If you want to define any melee weapon, second parameter=0, third parameter=1.  
	---If you want to identify any weapon (firearms, melee, rockets, etc.), second parameter=0, third parameter=2.  
	---Full list of weapons by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json  
	HAS_PED_BEEN_DAMAGED_BY_WEAPON = function(ped, weaponHash, weaponType) return invoker.call(0x2D343D2219CD027A, ped, weaponHash, weaponType).bool end,
	---Does NOT seem to work with HAS_PED_BEEN_DAMAGED_BY_WEAPON. Use CLEAR_ENTITY_LAST_WEAPON_DAMAGE and HAS_ENTITY_BEEN_DAMAGED_BY_WEAPON instead.  
	CLEAR_PED_LAST_WEAPON_DAMAGE = function(ped) invoker.call(0x0E98F88A24C5F4B8, ped) end,
	---It determines what weapons caused damage:  
	---  
	---If you want to define only a specific weapon, second parameter=weapon hash code, third parameter=0  
	---If you want to define any melee weapon, second parameter=0, third parameter=1.  
	---If you want to identify any weapon (firearms, melee, rockets, etc.), second parameter=0, third parameter=2.  
	---Full list of weapons by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json  
	HAS_ENTITY_BEEN_DAMAGED_BY_WEAPON = function(entity, weaponHash, weaponType) return invoker.call(0x131D401334815E94, entity, weaponHash, weaponType).bool end,
	---  
	CLEAR_ENTITY_LAST_WEAPON_DAMAGE = function(entity) invoker.call(0xAC678E40BE7C74D2, entity) end,
	---  
	SET_PED_DROPS_WEAPON = function(ped) invoker.call(0x6B7513D9966FBEC0, ped) end,
	---Full list of weapons by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json  
	SET_PED_DROPS_INVENTORY_WEAPON = function(ped, weaponHash, xOffset, yOffset, zOffset, ammoCount) invoker.call(0x208A1888007FC0E6, ped, weaponHash, xOffset, yOffset, zOffset, ammoCount) end,
	---p2 is mostly 1 in the scripts.  
	---Full list of weapons by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json  
	GET_MAX_AMMO_IN_CLIP = function(ped, weaponHash, p2) return invoker.call(0xA38DCFFCEA8962FA, ped, weaponHash, p2).int end,
	---  
	_GET_TIME_BEFORE_VEHICLE_WEAPON_RELOAD_FINISHES = function(vehicle, seat) return invoker.call(0xC8C6F4B1CDEB40EF, vehicle, seat).int end,
	---  
	_HAS_WEAPON_RELOADING_IN_VEHICLE = function(vehicle, seat) return invoker.call(0x8062F07153F4446F, vehicle, seat).bool end,
	---  
	_GET_VEHICLE_WEAPON_RELOAD_TIME = function(vehicle, seat) return invoker.call(0xD0AD348FFD7A6868, vehicle, seat).float end,
	---  
	_GET_AMMO_IN_VEHICLE_WEAPON_CLIP = function(vehicle, seat, ammo) return invoker.call(0x2857938C5D407AFA, vehicle, seat, ammo).bool end,
	---Full list of weapons by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json  
	GET_AMMO_IN_CLIP = function(ped, weaponHash, ammo) return invoker.call(0x2E1202248937775C, ped, weaponHash, ammo).bool end,
	---  
	_SET_AMMO_IN_VEHICLE_WEAPON_CLIP = function(vehicle, seat, ammo) return invoker.call(0x873906720EE842C3, vehicle, seat, ammo).bool end,
	---Full list of weapons by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json  
	SET_AMMO_IN_CLIP = function(ped, weaponHash, ammo) return invoker.call(0xDCD2A934D65CB497, ped, weaponHash, ammo).bool end,
	---Full list of weapons by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json  
	GET_MAX_AMMO = function(ped, weaponHash, ammo) return invoker.call(0xDC16122C7A20C933, ped, weaponHash, ammo).bool end,
	---Returns the max ammo for an ammo type. Ammo types: https://gist.github.com/root-cause/faf41f59f7a6d818b7db0b839bd147c1  
	GET_MAX_AMMO_BY_TYPE = function(ped, ammoTypeHash, ammo) return invoker.call(0x585847C5E4E11709, ped, ammoTypeHash, ammo).bool end,
	---Ammo types: https://gist.github.com/root-cause/faf41f59f7a6d818b7db0b839bd147c1  
	ADD_PED_AMMO_BY_TYPE = function(ped, ammoTypeHash, ammo) invoker.call(0x2472622CE1F2D45F, ped, ammoTypeHash, ammo) end,
	---Ammo types: https://gist.github.com/root-cause/faf41f59f7a6d818b7db0b839bd147c1  
	SET_PED_AMMO_BY_TYPE = function(ped, ammoTypeHash, ammo) invoker.call(0x5FD1E1F011E76D7E, ped, ammoTypeHash, ammo) end,
	---  
	GET_PED_AMMO_BY_TYPE = function(ped, ammoTypeHash) return invoker.call(0x39D22031557946C1, ped, ammoTypeHash).int end,
	---  
	SET_PED_AMMO_TO_DROP = function(ped, p1) invoker.call(0xA4EFEF9440A5B0EF, ped, p1) end,
	---  
	SET_PICKUP_AMMO_AMOUNT_SCALER = function(p0) invoker.call(0xE620FD3512A04F18, p0) end,
	---Returns the current ammo type of the specified ped's specified weapon.  
	---MkII magazines will change the return value, like Pistol MkII returning AMMO_PISTOL without any components and returning AMMO_PISTOL_TRACER after Tracer Rounds component is attached.  
	---Use 0xF489B44DD5AF4BD9 if you always want AMMO_PISTOL.  
	---Full list of weapons by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json  
	GET_PED_AMMO_TYPE_FROM_WEAPON = function(ped, weaponHash) return invoker.call(0x7FEAD38B326B9F74, ped, weaponHash).int end,
	---Returns the base/default ammo type of the specified ped's specified weapon.  
	---Use GET_PED_AMMO_TYPE_FROM_WEAPON if you want current ammo type (like AMMO_MG_INCENDIARY/AMMO_MG_TRACER while using MkII magazines) and use this if you want base ammo type. (AMMO_MG)  
	---Full list of weapons by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json  
	GET_PED_ORIGINAL_AMMO_TYPE_FROM_WEAPON = function(ped, weaponHash) return invoker.call(0xF489B44DD5AF4BD9, ped, weaponHash).int end,
	---Pass ped. Pass address of Vector3.  
	---The coord will be put into the Vector3.  
	---The return will determine whether there was a coord found or not.  
	GET_PED_LAST_WEAPON_IMPACT_COORD = function(ped, coords) return invoker.call(0x6C4D0409BA1A2BC2, ped, coords).bool end,
	---p1/gadgetHash was always 0xFBAB5776 ("GADGET_PARACHUTE").  
	---p2 is always true.  
	SET_PED_GADGET = function(ped, gadgetHash, p2) invoker.call(0xD0D7B1E680ED4A1A, ped, gadgetHash, p2) end,
	---gadgetHash - was always 0xFBAB5776 ("GADGET_PARACHUTE").  
	GET_IS_PED_GADGET_EQUIPPED = function(ped, gadgetHash) return invoker.call(0xF731332072F5156C, ped, gadgetHash).bool end,
	---Returns the hash of the weapon.   
	---  
	---            var num7 = WEAPON::GET_SELECTED_PED_WEAPON(num4);  
	---            sub_27D3(num7);  
	---            switch (num7)  
	---            {  
	---                case 0x24B17070:  
	---  
	---Also see WEAPON::GET_CURRENT_PED_WEAPON. Difference?  
	---  
	----------------------------------------------------------------------------  
	---  
	---The difference is that GET_SELECTED_PED_WEAPON simply returns the ped's current weapon hash but GET_CURRENT_PED_WEAPON also checks the weapon object and returns true if the hash of the weapon object equals the weapon hash  
	---Full list of weapons by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json  
	GET_SELECTED_PED_WEAPON = function(ped) return invoker.call(0x0A6DB4965674D243, ped).int end,
	---             WEAPON::EXPLODE_PROJECTILES(PLAYER::PLAYER_PED_ID(), func_221(0x00000003), 0x00000001);  
	EXPLODE_PROJECTILES = function(ped, weaponHash, p2) invoker.call(0xFC4BD125DE7611E4, ped, weaponHash, p2) end,
	---If `explode` true, then removal is done through exploding the projectile. Basically the same as EXPLODE_PROJECTILES but without defining the owner ped.  
	REMOVE_ALL_PROJECTILES_OF_TYPE = function(weaponHash, explode) invoker.call(0xFC52E0F37E446528, weaponHash, explode) end,
	---  
	GET_LOCKON_DISTANCE_OF_CURRENT_PED_WEAPON = function(ped) return invoker.call(0x840F03E9041E2C9C, ped).float end,
	---  
	GET_MAX_RANGE_OF_CURRENT_PED_WEAPON = function(ped) return invoker.call(0x814C9D19DFD69679, ped).float end,
	---Fourth Parameter = unsure, almost always -1  
	HAS_VEHICLE_GOT_PROJECTILE_ATTACHED = function(driver, vehicle, weaponHash, p3) return invoker.call(0x717C8481234E3B88, driver, vehicle, weaponHash, p3).bool end,
	---Full list of weapons & components by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json  
	GIVE_WEAPON_COMPONENT_TO_PED = function(ped, weaponHash, componentHash) invoker.call(0xD966D51AA5B28BB9, ped, weaponHash, componentHash) end,
	---Full list of weapons & components by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json  
	REMOVE_WEAPON_COMPONENT_FROM_PED = function(ped, weaponHash, componentHash) invoker.call(0x1E8BE90C74FB4C09, ped, weaponHash, componentHash) end,
	---Full list of weapons & components by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json  
	HAS_PED_GOT_WEAPON_COMPONENT = function(ped, weaponHash, componentHash) return invoker.call(0xC593212475FAE340, ped, weaponHash, componentHash).bool end,
	---Full list of weapons & components by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json  
	IS_PED_WEAPON_COMPONENT_ACTIVE = function(ped, weaponHash, componentHash) return invoker.call(0x0D78DE0572D3969E, ped, weaponHash, componentHash).bool end,
	---  
	REFILL_AMMO_INSTANTLY = function(ped) return invoker.call(0x8C0D57EA686FAD87, ped).bool end,
	---Forces a ped to reload only if they are able to; if they have a full magazine, they will not reload.  
	MAKE_PED_RELOAD = function(ped) return invoker.call(0x20AE33F3AC9C0033, ped).bool end,
	---  
	_TRIGGER_VEHICLE_WEAPON_RELOAD = function(vehicle, seat, ped) return invoker.call(0x5B1513F27F279A44, vehicle, seat, ped).bool end,
	---Nearly every instance of p1 I found was 31. Nearly every instance of p2 I found was 0.  
	---  
	---REQUEST_WEAPON_ASSET(iLocal_1888, 31, 26);  
	REQUEST_WEAPON_ASSET = function(weaponHash, p1, p2) invoker.call(0x5443438F033E29C3, weaponHash, p1, p2) end,
	---  
	HAS_WEAPON_ASSET_LOADED = function(weaponHash) return invoker.call(0x36E353271F0E90EE, weaponHash).bool end,
	---  
	REMOVE_WEAPON_ASSET = function(weaponHash) invoker.call(0xAA08EF13F341C8FC, weaponHash) end,
	---Now has 8 params.  
	CREATE_WEAPON_OBJECT = function(weaponHash, ammoCount, x, y, z, showWorldModel, scale, p7, p8, p9) return invoker.call(0x9541D3CF0D398F36, weaponHash, ammoCount, x, y, z, showWorldModel, scale, p7, p8, p9).int end,
	---componentHash:  
	---(use WEAPON::GET_WEAPON_COMPONENT_TYPE_MODEL() to get hash value)  
	---${component_at_ar_flsh}, ${component_at_ar_supp}, ${component_at_pi_flsh}, ${component_at_scope_large}, ${component_at_ar_supp_02}  
	GIVE_WEAPON_COMPONENT_TO_WEAPON_OBJECT = function(weaponObject, componentHash) invoker.call(0x33E179436C0B31DB, weaponObject, componentHash) end,
	---see DOES_WEAPON_TAKE_WEAPON_COMPONENT for full list of weapons & components  
	REMOVE_WEAPON_COMPONENT_FROM_WEAPON_OBJECT = function(object, componentHash) invoker.call(0xF7D82B0D66777611, object, componentHash) end,
	---see DOES_WEAPON_TAKE_WEAPON_COMPONENT for full list of weapons & components  
	HAS_WEAPON_GOT_WEAPON_COMPONENT = function(weapon, componentHash) return invoker.call(0x76A18844E743BF91, weapon, componentHash).bool end,
	---  
	GIVE_WEAPON_OBJECT_TO_PED = function(weaponObject, ped) invoker.call(0xB1FA61371AF7C4B7, weaponObject, ped) end,
	---Full list of weapons & components by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json  
	DOES_WEAPON_TAKE_WEAPON_COMPONENT = function(weaponHash, componentHash) return invoker.call(0x5CEE3DF569CECAB0, weaponHash, componentHash).bool end,
	---Drops the current weapon and returns the object  
	---  
	---Unknown behavior when unarmed.  
	GET_WEAPON_OBJECT_FROM_PED = function(ped, p1) return invoker.call(0xCAE1DC9A0E22A16D, ped, p1).int end,
	---Gives the specified loadout to the specified ped.   
	---Loadouts are defined in common.rpf\data\ai\loadouts.meta  
	GIVE_LOADOUT_TO_PED = function(ped, loadoutHash) invoker.call(0x68F8BE6AF5CDF8A6, ped, loadoutHash) end,
	---tintIndex can be the following:  
	---  
	---0 - Normal  
	---1 - Green  
	---2 - Gold  
	---3 - Pink  
	---4 - Army  
	---5 - LSPD  
	---6 - Orange  
	---7 - Platinum  
	---Full list of weapons, components & tint indexes by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json  
	SET_PED_WEAPON_TINT_INDEX = function(ped, weaponHash, tintIndex) invoker.call(0x50969B9B89ED5738, ped, weaponHash, tintIndex) end,
	---Full list of weapons, components & tint indexes by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json  
	GET_PED_WEAPON_TINT_INDEX = function(ped, weaponHash) return invoker.call(0x2B9EEDC07BD06B9F, ped, weaponHash).int end,
	---Full list of weapons, components & tint indexes by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json  
	SET_WEAPON_OBJECT_TINT_INDEX = function(weapon, tintIndex) invoker.call(0xF827589017D4E4A9, weapon, tintIndex) end,
	---  
	GET_WEAPON_OBJECT_TINT_INDEX = function(weapon) return invoker.call(0xCD183314F7CD2E57, weapon).int end,
	---Full list of weapons by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json  
	GET_WEAPON_TINT_COUNT = function(weaponHash) return invoker.call(0x5DCF6C5CAB2E9BF7, weaponHash).int end,
	---Colors:  
	---0 = Gray  
	---1 = Dark Gray  
	---2 = Black  
	---3 = White  
	---4 = Blue  
	---5 = Cyan  
	---6 = Aqua  
	---7 = Cool Blue  
	---8 = Dark Blue  
	---9 = Royal Blue  
	---10 = Plum  
	---11 = Dark Purple  
	---12 = Purple  
	---13 = Red  
	---14 = Wine Red  
	---15 = Magenta  
	---16 = Pink  
	---17 = Salmon  
	---18 = Hot Pink  
	---19 = Rust Orange  
	---20 = Brown  
	---21 = Earth  
	---22 = Orange  
	---23 = Light Orange  
	---24 = Dark Yellow  
	---25 = Yellow  
	---26 = Light Brown  
	---27 = Lime Green  
	---28 = Olive  
	---29 = Moss  
	---30 = Turquoise  
	---31 = Dark Green  
	---Full list of weapons, components, tint indexes & weapon liveries by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json  
	SET_PED_WEAPON_COMPONENT_TINT_INDEX = function(ped, weaponHash, camoComponentHash, colorIndex) invoker.call(0x9FE5633880ECD8ED, ped, weaponHash, camoComponentHash, colorIndex) end,
	---Returns -1 if camoComponentHash is invalid/not attached to the weapon.  
	---Full list of weapons, components, tint indexes & weapon liveries by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json  
	GET_PED_WEAPON_COMPONENT_TINT_INDEX = function(ped, weaponHash, camoComponentHash) return invoker.call(0xF0A60040BE558F2D, ped, weaponHash, camoComponentHash).int end,
	---Colors:  
	---0 = Gray  
	---1 = Dark Gray  
	---2 = Black  
	---3 = White  
	---4 = Blue  
	---5 = Cyan  
	---6 = Aqua  
	---7 = Cool Blue  
	---8 = Dark Blue  
	---9 = Royal Blue  
	---10 = Plum  
	---11 = Dark Purple  
	---12 = Purple  
	---13 = Red  
	---14 = Wine Red  
	---15 = Magenta  
	---16 = Pink  
	---17 = Salmon  
	---18 = Hot Pink  
	---19 = Rust Orange  
	---20 = Brown  
	---21 = Earth  
	---22 = Orange  
	---23 = Light Orange  
	---24 = Dark Yellow  
	---25 = Yellow  
	---26 = Light Brown  
	---27 = Lime Green  
	---28 = Olive  
	---29 = Moss  
	---30 = Turquoise  
	---31 = Dark Green  
	---Full list of weapons, components, tint indexes & weapon liveries by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json  
	SET_WEAPON_OBJECT_COMPONENT_TINT_INDEX = function(weaponObject, camoComponentHash, colorIndex) invoker.call(0x5DA825A85D0EA6E6, weaponObject, camoComponentHash, colorIndex) end,
	---Returns -1 if camoComponentHash is invalid/not attached to the weapon object.  
	---Full list of weapons, components, tint indexes & weapon liveries by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json  
	GET_WEAPON_OBJECT_COMPONENT_TINT_INDEX = function(weaponObject, camoComponentHash) return invoker.call(0xB3EA4FEABF41464B, weaponObject, camoComponentHash).int end,
	---  
	GET_PED_WEAPON_CAMO_INDEX = function(ped, weaponHash) return invoker.call(0xA2C9AC24B4061285, ped, weaponHash).int end,
	---  
	SET_WEAPON_OBJECT_CAMO_INDEX = function(weaponObject, p1) invoker.call(0x977CA98939E82E4B, weaponObject, p1) end,
	---struct WeaponHudStatsData  
	---{  
	---    BYTE hudDamage; // 0x0000  
	---    char _0x0001[0x7]; // 0x0001  
	---    BYTE hudSpeed; // 0x0008  
	---    char _0x0009[0x7]; // 0x0009  
	---    BYTE hudCapacity; // 0x0010  
	---    char _0x0011[0x7]; // 0x0011  
	---    BYTE hudAccuracy; // 0x0018  
	---    char _0x0019[0x7]; // 0x0019  
	---    BYTE hudRange; // 0x0020  
	---};  
	---  
	---Usage:  
	---  
	---WeaponHudStatsData data;  
	---if (GET_WEAPON_HUD_STATS(weaponHash, (int *)&data))  
	---{  
	---    // BYTE damagePercentage = data.hudDamage and so on  
	---}  
	---Full list of weapons by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json  
	GET_WEAPON_HUD_STATS = function(weaponHash, outData) return invoker.call(0xD92C739EE34C9EBA, weaponHash, outData).bool end,
	---  
	GET_WEAPON_COMPONENT_HUD_STATS = function(componentHash, outData) return invoker.call(0xB3CAF387AE12E9F8, componentHash, outData).bool end,
	---This native does not return damages of weapons from the melee and explosive group.  
	---Full list of weapons by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json  
	GET_WEAPON_DAMAGE = function(weaponHash, componentHash) return invoker.call(0x3133B907D8B32053, weaponHash, componentHash).float end,
	---// Returns the size of the default weapon component clip.  
	---  
	---Use it like this:  
	---  
	---char cClipSize[32];  
	---Hash cur;  
	---if (WEAPON::GET_CURRENT_PED_WEAPON(playerPed, &cur, 1))  
	---{  
	---    if (WEAPON::IS_WEAPON_VALID(cur))  
	---    {  
	---        int iClipSize = WEAPON::GET_WEAPON_CLIP_SIZE(cur);  
	---        sprintf_s(cClipSize, "ClipSize: %.d", iClipSize);  
	---        vDrawString(cClipSize, 0.5f, 0.5f);  
	---    }  
	---}  
	---Full list of weapons by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json  
	GET_WEAPON_CLIP_SIZE = function(weaponHash) return invoker.call(0x583BE370B1EC6EB4, weaponHash).int end,
	---Full list of weapons by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json  
	GET_WEAPON_TIME_BETWEEN_SHOTS = function(weaponHash) return invoker.call(0x065D2AACAD8CF7A4, weaponHash).float end,
	---  
	SET_PED_CHANCE_OF_FIRING_BLANKS = function(ped, xBias, yBias) invoker.call(0x8378627201D5497D, ped, xBias, yBias) end,
	---Returns handle of the projectile.  
	SET_PED_SHOOT_ORDNANCE_WEAPON = function(ped, p1) return invoker.call(0xB4C8D77C80C0421E, ped, p1).int end,
	---  
	REQUEST_WEAPON_HIGH_DETAIL_MODEL = function(weaponObject) invoker.call(0x48164DBB970AC3F0, weaponObject) end,
	---  
	_SET_WEAPON_PED_DAMAGE_MODIFIER = function(weapon, damageModifier) invoker.call(0x1091922715B68DF0, weapon, damageModifier) end,
	---Changes the weapon damage output by the given multiplier value. Must be run every frame.  
	---Full list of weapons by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json  
	SET_WEAPON_DAMAGE_MODIFIER = function(weaponHash, damageMultiplier) invoker.call(0x4757F00BC6323CFE, weaponHash, damageMultiplier) end,
	---  
	SET_WEAPON_AOE_MODIFIER = function(weaponHash, multiplier) invoker.call(0x4AE5AC8B852D642C, weaponHash, multiplier) end,
	---ex, WEAPON::SET_WEAPON_EFFECT_DURATION_MODIFIER(joaat("vehicle_weapon_mine_slick"), 1.0);  
	SET_WEAPON_EFFECT_DURATION_MODIFIER = function(p0, p1) invoker.call(0xE6D2CEDD370FF98E, p0, p1) end,
	---This native returns a true or false value.  
	---  
	---Ped ped = The ped whose weapon you want to check.  
	IS_PED_CURRENT_WEAPON_SILENCED = function(ped) return invoker.call(0x65F0C5AE05943EC7, ped).bool end,
	---  
	IS_FLASH_LIGHT_ON = function(ped) return invoker.call(0x4B7620C47217126C, ped).bool end,
	---  
	SET_FLASH_LIGHT_FADE_DISTANCE = function(distance) return invoker.call(0xCEA66DAD478CD39B, distance).bool end,
	---Enables/disables flashlight on ped's weapon.  
	SET_FLASH_LIGHT_ACTIVE_HISTORY = function(ped, toggle) invoker.call(0x988DB6FE9B3AC000, ped, toggle) end,
	---Changes the selected ped aiming animation style.   
	---Note : You must use GET_HASH_KEY!  
	---  
	---Strings to use with GET_HASH_KEY :  
	---  
	---    "Ballistic",  
	---    "Default",  
	---  "Fat",  
	---  "Female",  
	---   "FirstPerson",  
	---  "FirstPersonAiming",  
	---    "FirstPersonFranklin",  
	---  "FirstPersonFranklinAiming",  
	---    "FirstPersonFranklinRNG",  
	---   "FirstPersonFranklinScope",  
	--- "FirstPersonMPFemale",  
	---  "FirstPersonMichael",  
	---   "FirstPersonMichaelAiming",  
	--- "FirstPersonMichaelRNG",  
	---    "FirstPersonMichaelScope",  
	---  "FirstPersonRNG",  
	---   "FirstPersonScope",  
	--- "FirstPersonTrevor",  
	---    "FirstPersonTrevorAiming",  
	---  "FirstPersonTrevorRNG",  
	--- "FirstPersonTrevorScope",  
	---   "Franklin",  
	--- "Gang",  
	--- "Gang1H",  
	---   "GangFemale",  
	---   "Hillbilly",  
	---    "MP_F_Freemode",  
	---    "Michael",  
	---  "SuperFat",  
	--- "Trevor"  
	SET_WEAPON_ANIMATION_OVERRIDE = function(ped, animStyle) invoker.call(0x1055AC3A667F09D9, ped, animStyle) end,
	---enum class eDamageType  
	---{  
	---	UNKNOWN = 0,  
	---	NONE = 1,  
	---	MELEE = 2,  
	---	BULLET = 3,  
	---	BULLET_RUBBER = 4,  
	---	EXPLOSIVE = 5,  
	---	FIRE = 6,  
	---	COLLISION = 7,  
	---	FALL = 8,  
	---	DROWN = 9,  
	---	ELECTRIC = 10,  
	---	BARBED_WIRE = 11,  
	---	FIRE_EXTINGUISHER = 12,  
	---	SMOKE = 13,  
	---	WATER_CANNON = 14,  
	---	TRANQUILIZER = 15,  
	---};  
	---  
	---Full list of weapons by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json  
	GET_WEAPON_DAMAGE_TYPE = function(weaponHash) return invoker.call(0x3BE0BB12D25FB305, weaponHash).int end,
	---  
	SET_EQIPPED_WEAPON_START_SPINNING_AT_FULL_SPEED = function(ped) invoker.call(0xE4DCEC7FD5B739A5, ped) end,
	---this returns if you can use the weapon while using a parachute  
	---Full list of weapons by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json  
	CAN_USE_WEAPON_ON_PARACHUTE = function(weaponHash) return invoker.call(0xBC7BE5ABC0879F74, weaponHash).bool end,
	---Both coordinates are from objects in the decompiled scripts. Native related to 0xECDC202B25E5CF48 p1 value. The only weapon hash used in the decompiled scripts is weapon_air_defence_gun. These two natives are used by the yacht script, decompiled scripts suggest it and the weapon hash used (valkyrie's rockets) are also used by yachts.  
	CREATE_AIR_DEFENCE_SPHERE = function(x, y, z, radius, p4, p5, p6, weaponHash) return invoker.call(0x91EF34584710BE99, x, y, z, radius, p4, p5, p6, weaponHash).int end,
	---Full list of weapons by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json  
	CREATE_AIR_DEFENCE_ANGLED_AREA = function(p0, p1, p2, p3, p4, p5, p6, p7, p8, radius, weaponHash) return invoker.call(0x9DA58CDBF6BDBC08, p0, p1, p2, p3, p4, p5, p6, p7, p8, radius, weaponHash).int end,
	---  
	REMOVE_AIR_DEFENCE_SPHERE = function(zoneId) return invoker.call(0x0ABF535877897560, zoneId).bool end,
	---  
	REMOVE_ALL_AIR_DEFENCE_SPHERES = function() invoker.call(0x1E45B34ADEBEE48E) end,
	---  
	SET_PLAYER_TARGETTABLE_FOR_AIR_DEFENCE_SPHERE = function(player, zoneId, enable) invoker.call(0xECDC202B25E5CF48, player, zoneId, enable) end,
	---  
	IS_AIR_DEFENCE_SPHERE_IN_AREA = function(x, y, z, radius, outZoneId) return invoker.call(0xDAB963831DBFD3F4, x, y, z, radius, outZoneId).bool end,
	---  
	FIRE_AIR_DEFENCE_SPHERE_WEAPON_AT_POSITION = function(zoneId, x, y, z) invoker.call(0x44F1012B69313374, zoneId, x, y, z) end,
	---  
	DOES_AIR_DEFENCE_SPHERE_EXIST = function(zoneId) return invoker.call(0xCD79A550999D7D4F, zoneId).bool end,
	---Disables selecting the given weapon. Ped isn't forced to put the gun away. However you can't reselect the weapon if you holster then unholster. Weapon is also grayed out on the weapon wheel.  
	---Full list of weapons by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json  
	SET_CAN_PED_SELECT_INVENTORY_WEAPON = function(ped, weaponHash, toggle) invoker.call(0xB4771B9AAF4E68E4, ped, weaponHash, toggle) end,
	---Disable all weapons. Does the same as 0xB4771B9AAF4E68E4 except for all weapons.  
	SET_CAN_PED_SELECT_ALL_WEAPONS = function(ped, toggle) invoker.call(0xEFF296097FF1E509, ped, toggle) end,
}
ZONE={
	GET_ZONE_AT_COORDS = function(x, y, z) return invoker.call(0x27040C25DE6CB2F4, x, y, z).int end,
	---'zoneName' corresponds to an entry in 'popzone.ipl'.  
	---  
	---AIRP = Los Santos International Airport  
	---ALAMO = Alamo Sea  
	---ALTA = Alta  
	---ARMYB = Fort Zancudo  
	---BANHAMC = Banham Canyon Dr  
	---BANNING = Banning  
	---BEACH = Vespucci Beach  
	---BHAMCA = Banham Canyon  
	---BRADP = Braddock Pass  
	---BRADT = Braddock Tunnel  
	---BURTON = Burton  
	---CALAFB = Calafia Bridge  
	---CANNY = Raton Canyon  
	---CCREAK = Cassidy Creek  
	---CHAMH = Chamberlain Hills  
	---CHIL = Vinewood Hills  
	---CHU = Chumash  
	---CMSW = Chiliad Mountain State Wilderness  
	---CYPRE = Cypress Flats  
	---DAVIS = Davis  
	---DELBE = Del Perro Beach  
	---DELPE = Del Perro  
	---DELSOL = La Puerta  
	---DESRT = Grand Senora Desert  
	---DOWNT = Downtown  
	---DTVINE = Downtown Vinewood  
	---EAST_V = East Vinewood  
	---EBURO = El Burro Heights  
	---ELGORL = El Gordo Lighthouse  
	---ELYSIAN = Elysian Island  
	---GALFISH = Galilee  
	---GOLF = GWC and Golfing Society  
	---GRAPES = Grapeseed  
	---GREATC = Great Chaparral  
	---HARMO = Harmony  
	---HAWICK = Hawick  
	---HORS = Vinewood Racetrack  
	---HUMLAB = Humane Labs and Research  
	---JAIL = Bolingbroke Penitentiary  
	---KOREAT = Little Seoul  
	---LACT = Land Act Reservoir  
	---LAGO = Lago Zancudo  
	---LDAM = Land Act Dam  
	---LEGSQU = Legion Square  
	---LMESA = La Mesa  
	---LOSPUER = La Puerta  
	---MIRR = Mirror Park  
	---MORN = Morningwood  
	---MOVIE = Richards Majestic  
	---MTCHIL = Mount Chiliad  
	---MTGORDO = Mount Gordo  
	---MTJOSE = Mount Josiah  
	---MURRI = Murrieta Heights  
	---NCHU = North Chumash  
	---NOOSE = N.O.O.S.E  
	---OCEANA = Pacific Ocean  
	---PALCOV = Paleto Cove  
	---PALETO = Paleto Bay  
	---PALFOR = Paleto Forest  
	---PALHIGH = Palomino Highlands  
	---PALMPOW = Palmer-Taylor Power Station  
	---PBLUFF = Pacific Bluffs  
	---PBOX = Pillbox Hill  
	---PROCOB = Procopio Beach  
	---RANCHO = Rancho  
	---RGLEN = Richman Glen  
	---RICHM = Richman  
	---ROCKF = Rockford Hills  
	---RTRAK = Redwood Lights Track  
	---SANAND = San Andreas  
	---SANCHIA = San Chianski Mountain Range  
	---SANDY = Sandy Shores  
	---SKID = Mission Row  
	---SLAB = Stab City  
	---STAD = Maze Bank Arena  
	---STRAW = Strawberry  
	---TATAMO = Tataviam Mountains  
	---TERMINA = Terminal  
	---TEXTI = Textile City  
	---TONGVAH = Tongva Hills  
	---TONGVAV = Tongva Valley  
	---VCANA = Vespucci Canals  
	---VESP = Vespucci  
	---VINE = Vinewood  
	---WINDF = Ron Alternates Wind Farm  
	---WVINE = West Vinewood  
	---ZANCUDO = Zancudo River  
	---ZP_ORT = Port of South Los Santos  
	---ZQ_UAR = Davis Quartz  
	---  
	---Full list of zones by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/zones.json  
	GET_ZONE_FROM_NAME_ID = function(zoneName) return invoker.call(0x98CD1D2934B76CC1, zoneName).int end,
	---  
	GET_ZONE_POPSCHEDULE = function(zoneId) return invoker.call(0x4334BC40AA0CB4BB, zoneId).int end,
	---AIRP = Los Santos International Airport  
	---ALAMO = Alamo Sea  
	---ALTA = Alta  
	---ARMYB = Fort Zancudo  
	---BANHAMC = Banham Canyon Dr  
	---BANNING = Banning  
	---BEACH = Vespucci Beach  
	---BHAMCA = Banham Canyon  
	---BRADP = Braddock Pass  
	---BRADT = Braddock Tunnel  
	---BURTON = Burton  
	---CALAFB = Calafia Bridge  
	---CANNY = Raton Canyon  
	---CCREAK = Cassidy Creek  
	---CHAMH = Chamberlain Hills  
	---CHIL = Vinewood Hills  
	---CHU = Chumash  
	---CMSW = Chiliad Mountain State Wilderness  
	---CYPRE = Cypress Flats  
	---DAVIS = Davis  
	---DELBE = Del Perro Beach  
	---DELPE = Del Perro  
	---DELSOL = La Puerta  
	---DESRT = Grand Senora Desert  
	---DOWNT = Downtown  
	---DTVINE = Downtown Vinewood  
	---EAST_V = East Vinewood  
	---EBURO = El Burro Heights  
	---ELGORL = El Gordo Lighthouse  
	---ELYSIAN = Elysian Island  
	---GALFISH = Galilee  
	---GOLF = GWC and Golfing Society  
	---GRAPES = Grapeseed  
	---GREATC = Great Chaparral  
	---HARMO = Harmony  
	---HAWICK = Hawick  
	---HORS = Vinewood Racetrack  
	---HUMLAB = Humane Labs and Research  
	---JAIL = Bolingbroke Penitentiary  
	---KOREAT = Little Seoul  
	---LACT = Land Act Reservoir  
	---LAGO = Lago Zancudo  
	---LDAM = Land Act Dam  
	---LEGSQU = Legion Square  
	---LMESA = La Mesa  
	---LOSPUER = La Puerta  
	---MIRR = Mirror Park  
	---MORN = Morningwood  
	---MOVIE = Richards Majestic  
	---MTCHIL = Mount Chiliad  
	---MTGORDO = Mount Gordo  
	---MTJOSE = Mount Josiah  
	---MURRI = Murrieta Heights  
	---NCHU = North Chumash  
	---NOOSE = N.O.O.S.E  
	---OCEANA = Pacific Ocean  
	---PALCOV = Paleto Cove  
	---PALETO = Paleto Bay  
	---PALFOR = Paleto Forest  
	---PALHIGH = Palomino Highlands  
	---PALMPOW = Palmer-Taylor Power Station  
	---PBLUFF = Pacific Bluffs  
	---PBOX = Pillbox Hill  
	---PROCOB = Procopio Beach  
	---RANCHO = Rancho  
	---RGLEN = Richman Glen  
	---RICHM = Richman  
	---ROCKF = Rockford Hills  
	---RTRAK = Redwood Lights Track  
	---SANAND = San Andreas  
	---SANCHIA = San Chianski Mountain Range  
	---SANDY = Sandy Shores  
	---SKID = Mission Row  
	---SLAB = Stab City  
	---STAD = Maze Bank Arena  
	---STRAW = Strawberry  
	---TATAMO = Tataviam Mountains  
	---TERMINA = Terminal  
	---TEXTI = Textile City  
	---TONGVAH = Tongva Hills  
	---TONGVAV = Tongva Valley  
	---VCANA = Vespucci Canals  
	---VESP = Vespucci  
	---VINE = Vinewood  
	---WINDF = Ron Alternates Wind Farm  
	---WVINE = West Vinewood  
	---ZANCUDO = Zancudo River  
	---ZP_ORT = Port of South Los Santos  
	---ZQ_UAR = Davis Quartz  
	---  
	---Full list of zones by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/zones.json  
	GET_NAME_OF_ZONE = function(x, y, z) return invoker.call(0xCD90657D4C30E1CA, x, y, z).str end,
	---  
	SET_ZONE_ENABLED = function(zoneId, toggle) invoker.call(0xBA5ECEEA120E5611, zoneId, toggle) end,
	---cellphone range 1- 5 used for signal bar in iFruit phone  
	GET_ZONE_SCUMMINESS = function(zoneId) return invoker.call(0x5F7B268D15BA0739, zoneId).int end,
	---Only used once in the decompiled scripts. Seems to be related to scripted vehicle generators.  
	---  
	---Modified example from "am_imp_exp.c4", line 6406:  
	---/* popSchedules[0] = ZONE::GET_ZONE_POPSCHEDULE(ZONE::GET_ZONE_AT_COORDS(891.3, 807.9, 188.1));  
	---etc.  
	---*/  
	---ZONE::OVERRIDE_POPSCHEDULE_VEHICLE_MODEL(popSchedules[index], vehicleHash);  
	---STREAMING::REQUEST_MODEL(vehicleHash);  
	OVERRIDE_POPSCHEDULE_VEHICLE_MODEL = function(scheduleId, vehicleHash) invoker.call(0x5F7D596BAC2E7777, scheduleId, vehicleHash) end,
	---Only used once in the decompiled scripts. Seems to be related to scripted vehicle generators.  
	---  
	---Modified example from "am_imp_exp.c4", line 6418:  
	---/* popSchedules[0] = ZONE::GET_ZONE_POPSCHEDULE(ZONE::GET_ZONE_AT_COORDS(891.3, 807.9, 188.1));  
	---etc.  
	---*/  
	---STREAMING::SET_MODEL_AS_NO_LONGER_NEEDED(vehicleHash);  
	---ZONE::CLEAR_POPSCHEDULE_OVERRIDE_VEHICLE_MODEL(popSchedules[index]);  
	CLEAR_POPSCHEDULE_OVERRIDE_VEHICLE_MODEL = function(scheduleId) invoker.call(0x5C0DE367AA0D911C, scheduleId) end,
	---Returns a hash representing which part of the map the given coords are located.  
	---  
	---Possible return values:  
	---(Hash of) city -> -289320599  
	---(Hash of) countryside -> 2072609373  
	---  
	---C# Example :  
	---  
	---Ped player = Game.Player.Character;  
	---Hash h = Function.Call<Hash>(Hash.GET_HASH_OF_MAP_AREA_AT_COORDS, player.Position.X, player.Position.Y, player.Position.Z);  
	GET_HASH_OF_MAP_AREA_AT_COORDS = function(x, y, z) return invoker.call(0x7EE64D51E8498728, x, y, z).int end,
}






-- 补充natives
PLAYER["SET_PLAYER_HEALTH_RECHARGE_LIMIT"]=function(--[[Player (int)]] player,--[[float]] limit) invoker.call(0xC388A0F065F5BC34, player, limit) end

PED["SET_PED_HAIR_COLOR"]=--[[void]] function(--[[Ped (int)]] ped,--[[int]] colorID,--[[int]] highlightColorID) invoker.call(0x4CFFC65454C93A49, ped, colorID, highlightColorID) end

VEHICLE["SET_VEHICLE_CONTROLS_INVERTED"]=function(--[[Vehicle (int)]] vehicle,--[[BOOL (bool)]] state) invoker.call(0x5B91B229243351A8, vehicle, state) end
VEHICLE["SET_VEHICLE_REDUCE_TRACTION"]=--[[void]] function(--[[Vehicle (int)]] vehicle,--[[int]] val) invoker.call(0x6DEE944E1EE90CFB, vehicle, val) end
VEHICLE["SET_VEHICLE_INTERIOR_COLOR"]=--[[void]] function(--[[Vehicle (int)]] vehicle,--[[int]] color) invoker.call(0xF40DD601A65F7F19, vehicle, color) end
VEHICLE["SET_VEHICLE_DASHBOARD_COLOR"]=--[[void]] function(--[[Vehicle (int)]] vehicle,--[[int]] color) invoker.call(0x6089CDF6A57F326C, vehicle, color) end
VEHICLE["SET_VEHICLE_XENON_LIGHTS_COLOR"]=--[[void]] function(--[[Vehicle (int)]] vehicle,--[[int]] colorIndex) invoker.call(0xE41033B25D003A07, vehicle, colorIndex) end
VEHICLE["SET_VEHICLE_NEON_LIGHT_ENABLED"]=--[[void]] function(--[[Vehicle (int)]] vehicle,--[[int]] index,--[[BOOL (bool)]] toggle) invoker.call(0x2AA720E4287BF269, vehicle, index, toggle) end
VEHICLE["SET_VEHICLE_NEON_LIGHTS_COLOUR"]=--[[void]] function(--[[Vehicle (int)]] vehicle,--[[int]] r,--[[int]] g,--[[int]] b) invoker.call(0x8E0A582209A62695, vehicle, r, g, b) end


HUD["SET_MINIMAP_SONAR_ENABLED"]=--[[void]] function(--[[BOOL (bool)]] toggle) invoker.call(0x6B50FC8749632EC1, toggle) end
HUD["SET_TOGGLE_MINIMAP_HEIST_ISLAND"]=--[[void]] function(--[[BOOL (bool)]] toggle) invoker.call(0x5E1460624D194A38, toggle) end

NETWORK["SHUTDOWN_AND_LOAD_MOST_RECENT_SAVE"]=--[[BOOL (bool)]] function() return invoker.call(0x9ECA15ADFE141431, x, y, z).bool end
NETWORK["NETWORK_SESSION_END"]=--[[BOOL (bool)]] function(--[[BOOL (bool)]] p0,--[[BOOL (bool)]] p1) return invoker.call(0xA02E59562D711006, p0, p1).bool end

GRAPHICS["SET_FORCE_VEHICLE_TRAILS"]=--[[void]] function(--[[BOOL (bool)]] toggle) invoker.call(0x4CC7F0FEA5283FE0, toggle) end